java map 按照value排序

399 阅读1分钟

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