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
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ük
Bir Harita nasıl sıralama<Key, Valu...
Nasıl bir Java fonksiyonu 2 değerleri ...
Harita Listesi dönüştürmek için Nasıl ...
Java nasıl bir HashMap sıralamak için...
Nasıl Javascript değerleri ile ilişkil...