【发布时间】:2019-01-19 04:00:23
【问题描述】:
考虑以下 Java HashMap。
Map<String, String> unsortMap = new HashMap<String, String>();
unsortMap.put("Z", "z");
unsortMap.put("B", "b");
unsortMap.put("A", "a");
unsortMap.put("C", "c");
现在我想按键排序这个地图。一种选择是我为此目的使用 TreeMap。
Map<String, String> treeMap = new TreeMap<String, String>(unsortMap);
另一个选项是我将 Java Streams 与 Sorted() 一起使用,如下所示。
Map<String, Integer> sortedMap = new HashMap<>();
unsortMap.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
在这两个中,首选哪个选项以及为什么(可能是在性能方面)?
谢谢
【问题讨论】:
-
您的第二个选项实际上不起作用。当然这应该算在内吗?
-
我对 HashMaps 和 LinkedHashMaps 的了解很低。我从这篇文章中得到它,它实际上有正确的实现howtodoinjava.com/sort/java-sort-map-by-key
-
有了上面的评论,请解释一下哪个选项更好?通过流排序的 LinkedHashMap 的 TreeMap
-
苹果到橘子……它们不是同一个数据结构
标签: java dictionary hashmap