Java 中的 map按照key排序可以使用基于红黑树的TreeMap,但是如果想要按照value排序呢?
其实可以将Map.Entry看作一个类,将这个类按照重写 Comparator
的流程来对数组进行排序就可以了
看代码
HashMap<Long, Integer> map = new HashMap<>();
map.put(100L, 3);
map.put(101L, 33);
map.put(102L, 32);
map.put(103L, 3);
map.put(150L, 21);
map.put(151L, 2);
map.put(152L, 23);
map.put(153L, 2);
map.put(300L, 1);
List<Map.Entry<Long, Integer>> list = new ArrayList<>(map.entrySet());
list.sort(Map.Entry.comparingByValue()); // 1.8很贴心的提供了比较的方法
// list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
list.forEach(e -> System.out.println(e.getKey() + "-" + e.getValue()));
结果:
300-1
151-2
153-2
100-3
103-3
150-21
152-23
102-32
101-33