想把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));
用他的方法真的好使,感谢!