【发布时间】:2015-10-05 22:34:12
【问题描述】:
我正在尝试使用 JDK 8 样式函数按其值对 Map 进行排序。虽然我得到了排序部分,但我不确定如何在 TreeMap 中收集结果。有人能解释一下如何以声明式的方式完成这项工作吗?
我需要收集到另一个Map<String, String>。
Map<String, String> map = new HashMap<>();
map.put("John", "time3");
map.put("Henry", "time6");
map.put("Smith", "time1");
map.put("Rock", "time2");
map.put("Ryan", "time5");
map.put("Gosling", "time4");
map.entrySet().stream()
.sorted(Map.Entry.<String, String>comparingByValue().reversed())
;
【问题讨论】:
-
收集到
TreeMap是没有意义的,因为它不会保留排序的顺序,而是会自己按键排序。您将需要收集到保留映射顺序的映射中,例如LinkedHashMap。见How to sort a LinkedHashMap by value in decreasing order in java stream?。 -
谢谢@misha。我能够使用 LinkedHashMap 解决它。
标签: java-8