我们可以使用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