1)利用stream
// 用list收集entry
List<Map.Entry<Integer, Integer>> entries = map.entrySet()
.stream().sorted((o1, o2) -> o2.getValue().compareTo(o1.getValue()))
.collect(Collectors.toList());
// 若需要返回Map要使用LinkedHashMap接收保证顺序
LinkedHashMap<Integer, Integer> linkedHashMap = Maps.newLinkedHashMap();
map.entrySet()
.stream().sorted((o1, o2) -> o2.getValue().compareTo(o1.getValue()))
.collect(Collectors.toList())
.forEach(e -> linkedHashMap.put(e.getKey(),e.getValue()));
2)利用工厂类Collections
// 把map(entry)变为list
ArrayList<Map.Entry<Integer, Integer>> entries = new ArrayList<>(map.entrySet());
// 使用工厂类对list进行排序
Collections.sort(entries, (o1, o2) -> o2.getValue().compareTo(o1.getValue()));