nasıl Java tuşu ile Harita değerleri sıralamak için | Netgez.com
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

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007
  • thetrollska

    thetrollska

    2 EKÄ°M 2009