2016-03-26 14 views
1

Aylara göre sınıflandırılmış zodyakların listesini içeren bir web sayfası var ("Aries", "March 21 - April 19"),("Taurus", "April 20 - May 20"), ("Gemini", "May 21 - June 20"),("Cancer", "June 21 - July 22") ..... Sık kullanılanlara bazı zodyak işaretleri ekleme seçeneği ve favori işaretler ilk sıraya göre sıralanmış ve Kalan zodyak da sıralı sırada favorilerden sonra listelenecektir. eg için i UI aracılığıyla sık kullanılanlara işaretleri takip eklendi Aylara göre işaretlenmiş zodyak işaretlerini kontrol et

("Taurus", "April 20 - May 20"),("Libra", "September 23 - October 22"),("Aquarius", "January 20 - February 18") 

Ve arayüzünde bu şekilde asıl amacım eklenen sık doğrulamak için

"Taurus", "April 20 - May 20" 
"Libra", "September 23 - October 22" 
"Aquarius", "January 20 - February 18" 

"Aries", "March 21 - April 19" 
"Gemini", "May 21 - June 20" 
"Cancer", "June 21 - July 22" 
"Leo", "July 23 - August 22" 
"Virgo", "August 23 - September 22" 
"Scorpio", "October 23 - November 21" 
"Capricorn", "November 22 - December 21" 
"Pisces", "February 19 - March 20" 

month.Also göre sıralanır aşağıdaki görüntülenecektir

Kalan zodyaklar da aylara göre sıralanır. ve bir ay xml dosyasından doğrulanıyor. Sık kullanılanlara bazı zodyak ekledikten sonra zodiacs listesini içeren bir xml yanıtı alacağım. Ve "21 Mart - 19 Nisan" ile zodyak işareti almak için xml'yi ayrıştıyorum ve haritanın içinde tutmak.

Map<String,String> ZodiacMap = new HashMap<String,String>();  

favori zodiacs i favori zodyakı doğrulamak için gereken aylara göre sıralanmaktadır da remining zodyakı doğrulamak için aylara göre sıralanmaktadır haritasında

zodiacMap1.put("Taurus", "April 20 - May 20"); 
zodiacMap1.put("Libra", "September 23 - October 22"); 
zodiacMap1.put("Aquarius", "January 20 - February 18"); 

remaning zodiacs

zodiacMap1.put("Aries", "March 21 - April 19"); 
zodiacMap1.put("Gemini", "May 21 - June 20"); 
zodiacMap1.put("Cancer", "June 21 - July 22"); 
zodiacMap1.put("Leo", "July 23 - August 22"); 
zodiacMap1.put("Virgo", "August 23 - September 22"); 
zodiacMap1.put("Scorpio", "October 23 - November 21"); 
zodiacMap1.put("Capricorn", "November 22 - December 21"); 
zodiacMap1.put("Pisces", "February 19 - March 20"); 

eklendi .

Bu nasıl kızabilir ... ????

cevap

3

Bunu yapmanın birçok olası yolu vardır. İşte bir örnek.

  • adı, örnek değeri: (başlama tarihinden) "İkizler"
  • ay, örnek değeri: 5 (Mayıs için)
  • metin

    bir alanlarla Zodiac denilen sınıf oluşturun örneğin değeri: "May 21 - 20 Haziran"

Ayrıca kendi .month alanlara göre Zodiac nesneleri karşılaştırmak olacak Comparator<Zodiac> uygulamak. Örneğin

:

Comparator<Zodiac> byMonthComparator = new Comparator<>() { 
    int compare(Zodiac o1, Zodiac o2) { 
     return Integer.compare(o1.month, o2.month); 
    } 
} 

Yeni oluşturduğunuz özel karşılaştırıcı kullanılarak, SortedSet içinde Zodiac örneklerini koyun. Bu setteki öğeler aylara göre sıralanır. Örneğin

:

SortedSet<Zodiac> all = new TreeSet<>(); 
all.add(new Zodiac("Gemini", 5, "May 21 - June 20"); 
all.add(...); 
... 
+0

u i xml yanıt oluşturulan zodiacMap1 ait sıralanmış sırası kontrol edebilirsiniz düşünüyorum İşletmesi mantığını kullanarak ??? aynı zamanda enum ile yapılabilecek herhangi bir yol var mı? – Psl

+0

Bu sıralı iki setten birini "statik ve dolu" biri 12 ve biri favoriler için boş olan bir tane için kullanabilirsiniz. Tüm favorileri sıralamak için, tam sette tüm girişler arasında geçiş yapın ve aynı zamanda bir favs üyesi değilse bir giriş görüntüleyin. –

İlgili konular