我有一個HashMap<Character, Integer>
,我想按照整數的升序將值放入PriorityQueue
。我在想辦法做到這一點時遇到麻煩。我有一個Node
類可以容納的值,所以:PriorityQueue<Node>
。在HashMap中排序值
回答
我不會用在這種情況下Map
....
寫自己的Pair
/Node
類,用於保存您的Character
和Integer
,使這個類實現Comparable
。
您可以在Comparable
here中閱讀。
在您的節點類,你將不得不實施compareTo
方法,財產以後這樣的:
public int compareTo(Node o) {
return this.idd - o.idd ;
}
其中id是可變的牽着你的整數。
這樣你可以把它們放在一個SortedSet
就像你在你的問題提
好了,實現了可比的並且重寫了compareTO,所以它返回-1表示小於,0表示相同的數字,1表示大於 –
好吧,現在只需將節點放入一個已排序的集合中,看看發生了什麼。 – Frank
雅我決定把他們全部在優先隊列,然後排序。Collections.sort()似乎並沒有與我的優先級隊列雖然:( 好吧,我重新閱讀優先隊列的文檔,看起來像它自動命令本身 –
代碼示例TreeSet
或PriorityQueue
:
HashMap<Character, Integer> h = new HashMap<Character, Integer>();
h.put('z',30);
h.put('e',10);
h.put('b',20);
h.put('c',20);
List<Map.Entry> a = new ArrayList<Map.Entry>(h.entrySet());
Collections.sort(a,
new Comparator() {
public int compare(Object o1, Object o2) {
Map.Entry e1 = (Map.Entry) o1;
Map.Entry e2 = (Map.Entry) o2;
return ((Comparable) e1.getValue()).compareTo(e2.getValue());
}
});
for (Map.Entry e : a) {
System.out.println(e.getKey() + " " + e.getValue());
}
輸出(由整數值排序所要求的OP):
e 10
b 20
c 20
z 30
- 1. 在Java中按值排序Hashmap 8
- 2. 如何按值排序hashmap?
- 3. HashMap和排序
- 4. 按字母順序排序類型的Hashmap值在Android中
- 5. 排序中包含HashMap
- 6. 排序的HashMap的類型列表值
- 7. 排序HashMap的基礎上,從價值
- 8. 反向排序HashMap?
- 9. 如何排序hashmap?
- 10. 在Android中排序HashMap <String,Double>
- 11. Java:在hashmap中顯示基於排序鍵的值
- 12. 將對象的值排序在HashMap中<String,Object>
- 13. Java中的HashMap值排序不回正確的順序
- 14. 類似HashMap但排序?
- 15. 如何排序包含HashMap
- 16. Java的HashMap的排序
- 17. 如何排序包含HashMap
- 18. 如何使用treeset對hashmap中的值進行排序?
- 19. 如何對HashMap中的值(ArrayList <String>)進行排序
- 20. HashMap:使用映射值將字母順序排序
- 21. HashMap中,由值
- 22. 值到HashMap中
- 23. 如何在Java中對HashMap的值進行排序並保留重複條目?
- 24. 需要重新排列HashMap鍵/值對
- 25. 在HashMap中改變值
- 26. 在java中檢索hashmap值
- 27. 使用HashMap的重新排序的字符串值
- 28. 當值爲對象時,按屬性對hashMap進行排序
- 29. 基於鍵值對HashMap的ArrayList進行排序
- 30. 對其屬性的HashMap對象進行排序而不是值
可能重複http://stackoverflow.com/questions/109383/how-to-sort-a-mapkey-value-on-the-values-in-java – Abubakkar
改爲使用'SortedMap'(例如'TreeMap'):http://docs.oracle.com/javase/6/docs/api/java/util/SortedMap.html – Yuushi
我在發佈之前查看了該線程,但我並沒有試圖對地圖進行排序(由於hashmaps的性質,這很複雜,幾乎不可能),而是以有序的方式選擇它們。 –