可能重複:
How to sort a Map<Key, Value> on the values in Java?訂單的HashMap <字符串,整數>根據整數
親愛, 我有一個散列映射,其中i的已保存壽值:歌手(串)和流行度(整數)。
現在,我想根據流行度來訂購這個哈希映射。
如何在java中做到這一點?
可能重複:
How to sort a Map<Key, Value> on the values in Java?訂單的HashMap <字符串,整數>根據整數
親愛, 我有一個散列映射,其中i的已保存壽值:歌手(串)和流行度(整數)。
現在,我想根據流行度來訂購這個哈希映射。
如何在java中做到這一點?
我假設您將歌手存儲爲關鍵字,並將歌手的知名度作爲價值存儲。 HashMap沒有排序,並且TreeMap按鍵排序,而不是按值排序,所以它不起作用。
如果您需要歌手依熱門程度排序,然後建立與地圖中所有的歌手列表,然後利用其比較無論是歌手的人氣比較排序此列表:
List<String> singers = new ArrayList<String>(map.keySet());
Collections.sort(singers, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
Integer popularity1 = map.get(s1);
Integer popularity2 = map.get(s2);
return popularity1.compareTo(popularity2);
}
});
HashMaps可以(按設計)不被排序。如果您需要訂購地圖,請使用TreeMap。
您無法控制HashMap元素的順序。新建一個TreeMap<Integer,List<String>>
並將數據複製到它。使用List<String>
來覆蓋你有int值重複的情況。
'TreeMap'不會幫助您按價值對地圖進行排序。 – axtavt 2011-03-07 11:28:03