SORU
28 Mayıs 2009, PERŞEMBE


nasıl Java tuşu ile Harita değerleri sıralamak için

Hem dizeleri olan java bir Harita var .

Aşağıdaki gibi veri: <"question1", "1">, <"question9", "1">, <"question2", "4">, <"question5", "2">

Anahtarları dayalı harita sıralamak istiyorum. Ben sonunda question1, question2, question3... yani.böylece bir.

Sonunda bu Harita iki dizeleri almak için çalışıyorum. İlk Dize: Soru 1 ..10 için () ve İkinci Dize: Cevaplar (aynı sipariş soru olarak).

Şimdi şu var:

Iterator it = paramMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
 questionAnswers  = pairs.getKey() ",";
}

Bu dize bana soru olur ama sırayla değil...

CEVAP
28 Mayıs 2009, PERŞEMBE


Kısa cevap

TreeMap kullanın. Bu tam da onun için.

Bu harita size geçer ve türünü belirlemek yapamıyorsanız, o zaman aşağıdakileri yapabilirsiniz:

SortedSet<String> keys = new TreeSet<String>(map.keySet());
for (String key : keys) { 
   String value = map.get(key);
   // do something
}

Bu anahtarların doğal sırayla harita üzerinde yineleme olacaktır.


Uzun cevap

Teknik olarak, SortedMap, uygulayan bir şey kullanabilirsiniz ama nadir durumlar hariç bu Map bir uygulama kullanarak genellikle HashMap miktar TreeMap, tutarlar.

Davalarında anahtarların nerede bir karmaşık türü bu değil uygulamak Karşılaştırılabilir ya da istemezsin kullanmak doğal düzen TreeMap TreeSet ek kurucular bu geçsin bir Comparator:

// placed inline for the demonstration, but doesn't have to be an anonymous class
Comparator<Foo> comparator = new Comparator<Foo>() {
  public int compare(Foo o1, Foo o2) {
    ...
  }
}
SortedSet<Foo> keys = new TreeSet<Foo>(comparator);
keys.addAll(map.keySet());

HashMap HashSet farklı performans özelliklerine sahip olacak TreeMap TreeSet kullanırken hatırlıyorum. Kabaca bulmak veya bir öğe eklemek işlemleri konuşan gidecekO(1)içinO(Log(N)).

Bir HashMap, hareket 1000 öğeleri 10.000 değil gerçekten etkiler zaman arama bir unsur, ama bir TreeMap arama zaman olacak yaklaşık 3 kat daha yavaş (varsayarak Günlük2). 100.000 1000 hareket eden her eleman araması için yaklaşık 6 kat daha yavaş olacaktır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • NLthomas21

    NLthomas21

    20 Mayıs 2008
  • TechShowsYou

    TechShowsYou

    3 Mart 2011
  • WK

    WK

    9 Ocak 2006