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) {
//利用Map的entrySet方法,转化为list进行排序
List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
//利用Collections的sort方法对list排序
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();
}
});
//遍历排序好的list,一定要放进LinkedHashMap,因为只有LinkedHashMap是根据插入顺序进行存储
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);
}
输出
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0032cd8f6d7e4a874033e0486d4e654a.png)