想把hashmap根据key值排序,试了好半天都不好使,不好使的语句如下:
tempMap.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> map.put(x.getKey(), x.getValue()));
tempMap.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByKey())).forEach(System.out::println);
出去取了个外卖,回来找到个文章:
您正在使用的收集器将元素放在一个HashMap,因此排序在这里没有帮助,因为您最终将它们放在一个无序的集合中.
使用重载toMap方法,并提供一个LinkedHashMap具体的实例,即:
Map<String, Map<String, Object>> sortedMap = tempMap.entrySet().stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a, LinkedHashMap::new));
用他的方法真的好使,感谢!
本文介绍了一种使用Java 8 Stream API对HashMap按键值排序的有效方法。通过使用toMap方法结合LinkedHashMap来保持排序结果,实现了键值的稳定排序。
1306

被折叠的 条评论
为什么被折叠?



