Live2D
欢迎阅读『Java Map实现按value从大到小排序』
//

Java Map实现按value从大到小排序

首先说一下如果Map对key进行从小到大默认排序是创建TreeMap对象。Map<Integer,Integer> maps = new TreeMap<>();就行了。

那么如何实现按value排序呢?

这里使用的是java.util.Collections类实现排序,将Map转成List,再自定义比较器,代码如下:

复制代码
package day01_jichu;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
 
public class MapValSort {
    public static void main(String[] args) {
        Map<String, Integer> maps = new TreeMap<String, Integer>();
        maps.put("zhangsan", 22);
        maps.put("lisi", 24);
        maps.put("wangwu", 18);
        maps.put("zhaoliu", 22);
         
        //自定义比较器
        Comparator<Map.Entry<String, Integer>> valCmp = new Comparator<Map.Entry<String,Integer>>() {
            @Override
            public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                // TODO Auto-generated method stub
                return o2.getValue()-o1.getValue();  // 降序排序,如果想升序就反过来
            }
        };
        //将map转成List,map的一组key,value对应list一个存储空间
        List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(maps.entrySet()); //传入maps实体
        Collections.sort(list,valCmp); // 注意此处Collections 是java.util包下面的,传入List和自定义的valCmp比较器
        //输出map
        for(int i=0;i<list.size();i++) {
            System.out.println(list.get(i).getKey() + " = " + list.get(i).getValue());
        }
    }
}
复制代码

https://www.cnblogs.com/zzlback/p/12381881.html

posted @   哦豁完蛋~  阅读(1288)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示