Map根据value的值进行排序(简单易懂)
1、将Map的entrySet转换为List
2、用Collections工具类的sort方法排序
3、遍历排序好的list,将每组key,value放进LinkedHashMap(Map的实现类只有LinkedHashMap是根据插入顺序来存储)
public static Map<String, Integer> sortMap(Map<String, Integer> map) {
List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
Collections.sort(entryList, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue() - o2.getValue();
}
});
LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<String, Integer>();
for (Map.Entry<String,Integer> e : entryList
) {
linkedHashMap.put(e.getKey(),e.getValue());
}
return linkedHashMap;
}
测试
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
map.put("赵四",23);
map.put("刘能",21);
map.put("广坤",25);
map.put("老七",18);
System.out.println(map);
Map<String, Integer> sortMap = sortMap(map);
System.out.println(sortMap);
}
输出