Java 如何根据值对Map进行排序

在 java 8 中,可以使用 Stream API 按值对Map进行排序 ,
Map.Entry类具有静态方法 comparingByValue()来按值排序。
此方法返回一个 Comparator,它按值的自然顺序比较 Map.Entry
我们还可以自定义Comparator,根据要求进行排序

Map<String, Integer> unSortedMap = getUnSortedMap();

System.out.println("Unsorted Map : " + unSortedMap);

LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<>();
unSortedMap.entrySet()
	.stream()
	.sorted(Map.Entry.comparingByValue())
	// .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) 倒序排序
	.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
	
System.out.println("Sorted Map   : " + sortedMap);
日期:2020-09-17 00:09:28 来源:oir作者:oir