我们可以使用TreeMap实现。
默认情况下,TreeMap中的所有键值对都按其自然顺序排序。
我们需要在 TreeMap中添加所有未排序的键值对。
如果要倒序排序,还需要指定Collections.reverseOrder()方法:
Map<String, Integer> unSortedMap = getUnSortedMap();
System.out.println("Unsorted Map : " + unSortedMap);
Map<String, Integer> sortedMap = new TreeMap<String, Integer>(unSortedMap);
// Map<String, Integer> reverseSortedMap = new TreeMap<String, Integer>(Collections.reverseOrder());
// reverseSortedMap.putAll(unSortedMap);
System.out.println("Sorted Map : " + sortedMap);
在 java 8 中,还可以使用 Stream API 根据键 对Map进行排序。
Map.Entry类具有静态方法 comparingByKey()来按键排序。
此方法返回一个 Comparator,它在key上按自然顺序比较 Map.Entry。
或者,我们可以传递自定义的“比较器”进行特殊的排序。
Map<String, Integer> unSortedMap = getUnSortedMap();
System.out.println("Unsorted Map : " + unSortedMap);
// LinkedHashMap保留插入元素的顺序
LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<>();
unSortedMap.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
// .sorted(Map.Entry.comparingByKey(Comparator.reverseOrder())) 倒序排序
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
System.out.println("Sorted Map : " + sortedMap);
日期:2020-09-17 00:09:26 来源:oir作者:oir
