Java 8 Java8-按值对映射进行排序并收集结果

Java 8 Java8-按值对映射进行排序并收集结果,java-8,Java 8,我尝试使用JDK 8风格的函数按值对映射进行排序。虽然我得到了排序部分,但我不确定如何在树状图中收集结果。有人能解释一下如何用声明式完成这项工作吗 我需要收集到另一张地图 Map Map=newhashmap(); 地图放置(“约翰”,“时间3”); 地图放置(“亨利”,“时间6”); 地图放置(“史密斯”,“时间1”); 地图放置(“岩石”、“时间2”); 地图放置(“Ryan”,“time5”); 地图放置(“小鹅”、“时间4”); map.entrySet().stream() .sort

我尝试使用JDK 8风格的函数按值对映射进行排序。虽然我得到了排序部分,但我不确定如何在树状图中收集结果。有人能解释一下如何用声明式完成这项工作吗

我需要收集到另一张
地图

Map Map=newhashmap();
地图放置(“约翰”,“时间3”);
地图放置(“亨利”,“时间6”);
地图放置(“史密斯”,“时间1”);
地图放置(“岩石”、“时间2”);
地图放置(“Ryan”,“time5”);
地图放置(“小鹅”、“时间4”);
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue().reversed())
;

虽然有两个问题与此类似,但我明确希望将结果存储在地图中。这是解决办法

    Map<String, String> sortedMap = map.entrySet().stream()
            .sorted(Map.Entry.<String, String>comparingByValue().reversed())
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v2, LinkedHashMap::new));
Map sortedMap=Map.entrySet().stream()
.sorted(Map.Entry.comparingByValue().reversed())
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue,(v1,v2)->v2,LinkedHashMap::new));

收集到
树状图中是毫无意义的,因为它不会保留已排序的顺序,而是会自己按键排序。您需要收集到一个映射中,该映射保留映射的顺序,如
LinkedHashMap
。看,谢谢你,米莎。我用LinkedHashMap解决了这个问题。
    Map<String, String> sortedMap = map.entrySet().stream()
            .sorted(Map.Entry.<String, String>comparingByValue().reversed())
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v2, LinkedHashMap::new));