可能重複:
How to sort a Map<Key, Value> on the values in Java?排序樹圖
我有一個treemap<Integer,Float>
。我怎樣才能在浮點數上對地圖進行排序?
有沒有什麼快捷方式?或者我必須爲地圖編寫比較器?
可能重複:
How to sort a Map<Key, Value> on the values in Java?排序樹圖
我有一個treemap<Integer,Float>
。我怎樣才能在浮點數上對地圖進行排序?
有沒有什麼快捷方式?或者我必須爲地圖編寫比較器?
實際上,您無法(正確,可靠地)按值排序Map
實現。 (你可能會看到聲明的實現是駭人的,不可靠的,並且非常奇怪地表現 - 拒絕重複值,在嘗試查看不在映射中的鍵時拋出異常,如果支持映射更改,則獲得不可恢復的損壞...)
相反,明確排序的條目列表:
List<Map.Entry<Integer, Float>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Integer, Float>>() {
public int compare(Map.Entry<Integer, Float> e1, Map.Entry<Integer, Float> e2){
return e1.getValue().compareTo(e2.getValue());
}
});
如果你喜歡,然後你可以把這個變成一個LinkedHashMap
:
Map<Integer, Float> sortedMap = new LinkedHashMap<Integer, Float>();
for (Map.Entry<Integer, Float> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
最簡單的小號解決方案可能是使用LinkedHashMap,並按值排序。看到這個: How to sort a LinkedHashMap by its value class's field?
@OP:注意重複問題的接受答案的注意事項。有一種解決方案無效的方法。 –