如何使用鍵降序排列哈希映射。請用例子來解釋。 以及對散列圖進行排序的方式。 請詳細解釋如何使用鍵降序排列哈希映射
0
A
回答
4
HashMap
s不支持排序。他們將存儲條目存儲在存儲桶中,他們如何看待它是否合適,僅基於密鑰的hashCode
值。它們可以存儲事物並在事後查找,但是不適合迭代它們的內容(這是你顯然想要做的),因爲你不能依賴它們的順序並且迭代它通常是很昂貴的。
改爲嘗試TreeMap
。您可以指定一個自定義比較器,它只執行默認比較器的反轉。在這種情況下,您的輸入將以降序訂購訂購。 Collections.reverseOrder
將創建這樣一個比較適合你,你可以使用它像這樣:
new TreeMap<Integer, String>(Collections.reverseOrder());
-2
HashMap<Integer, String> hmap = new HashMap<Integer, String>();
hmap.put(5, "A");
hmap.put(11, "C");
hmap.put(4, "Z");
hmap.put(77, "Y");
hmap.put(9, "P");
hmap.put(66, "Q");
hmap.put(0, "R");
System.out.println("Before Sorting:");
Set set = hmap.entrySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()) {
Map.Entry me = (Map.Entry)iterator.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
Map<Integer, String> map = new TreeMap<Integer, String>(hmap);
System.out.println("After Sorting:");
Set set2 = map.entrySet();
Iterator iterator2 = set2.iterator();
while(iterator2.hasNext()) {
Map.Entry me2 = (Map.Entry)iterator2.next();
System.out.print(me2.getKey() + ": ");
System.out.println(me2.getValue());
}
}
1
兩種方式來實現:
使用的HashMap
public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); map.put("A", 34); map.put("B", 25); map.put("C", 50); map.put("D", 50); // "duplicate" value System.out.println(entriesSortedByValues(map)); } static <K, V extends Comparable<? super V>> List<Entry<String, Integer>> entriesSortedByValues(Map<String, Integer> map) { List<Entry<String, Integer>> sortedEntries = new ArrayList<Entry<String, Integer>>(map.entrySet()); Collections.sort(sortedEntries, new Comparator<Entry<String, Integer>>() { @Override public int compare(Entry<String, Integer> e1, Entry<String, Integer> e2) { return e2.getKey().compareTo(e1.getKey()); } }); return sortedEntries; }
使用樹圖,書寫自己的
Comparator
public class Test2 { public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); map.put("A", 34); map.put("B", 25); map.put("C", 50); map.put("D", 50); MyComparator comp = new MyComparator(map); Map<String, Integer> newMap = new TreeMap(comp); newMap.putAll(map); System.out.println(newMap); } } class MyComparator implements Comparator { Map map; public MyComparator(Map map) { this.map = map; } @Override public int compare(Object o1, Object o2) { return (o2.toString()).compareTo(o1.toString()); } }
1
我建議使用此方法,因爲包含在Java的8
List<Map.Entry<String, Integer>> sorted_map =
map_1.entrySet()
.stream()
.sorted(reverseOrder(Map.Entry.comparingByKey()))
.collect(Collectors.toList());
這裏map_1'是要排序的地圖。
現在你可以使用sorted_map變量來迭代和使用你的目的。
確保:
import static java.util.Collections.reverseOrder;
的
相關問題
- 1. 排序哈希映射
- 2. 哈希映射對象鍵
- 3. 如何映射(並排序)散列哈希值?
- 4. 按值排序哈希映射
- 5. 下降哈希值排序
- 6. 使用哈希映射
- 7. 使用哈希映射
- 8. 如何使用哈希映射與JTable
- 9. 如何使用哈希映射
- 10. 通過哈希映射映射,需要返回哈希映射
- 11. 爪哇 - 哈希映射retreival序列
- 12. 按clojure中的哈希映射的懶惰序列排序
- 13. 嵌套哈希排序哈希鍵
- 14. 如何使用/逆向工程哈希映射鍵
- 15. 如何迭代通過哈希映射映射列表元素
- 16. 按值按字母順序排列哈希映射
- 17. 保留哈希映射的某些鍵
- 18. 插入重複鍵哈希映射
- 19. 使用GSON的JSON反序列化從哈希映射中的哈希映射跳過數據成員
- 20. 其鍵哈希值排序陣列
- 21. 哈希映射內的哈希映射的平均值
- 22. 哈希映射和併發哈希映射有什麼區別?
- 23. Ruby:如何使用數組或哈希映射對json響應進行排序
- 24. java哈希映射中的鍵值映射
- 25. 使用jcombobox同步哈希映射
- 26. 使用ArrayList的哈希映射
- 27. 使用鏈接的哈希映射
- 28. 使用哈希映射分配聲音
- 29. 身份哈希映射的使用
- 30. 按鍵排列映射鍵
可能重複[?如何排序在Java中值的地圖(http://stackoverflow.com/questions/109383/how-to-sort- map-value-in-the-value-in-java) –
Lamorak