Java Map实现按value从大到小排序
免费chatgpt使用网址 http://ffff.chat:2023 在设置中设置userID
这篇博客是对Java Map对value值实现排序
首先说一下如果Map对key进行从小到大默认排序是创建TreeMap对象。Map<Integer,Integer> maps = new TreeMap<>();就行了。
那么如何实现按value排序呢?
这里使用的是java.util.Collections类实现排序,将Map转成List,再自定义比较器,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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()); } } } |
下面是输出结果
分类:
java算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)