Java中Map按Value排序_java map排序 value-深圳网站优化推广公司

Java中Map按Value排序

47 篇文章 0 订阅

前言

Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。

TreeMap

基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

HashMap

HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。

Map.Entry返回Collections视图。

按key排序

TreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序。

注意:以下代码均已在Jdk1.6测试通过了

TreeMap默认按key升序排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void keyUpSort() {
    // 默认情况,TreeMap按key升序排序
    Map<String, Integer> map = new TreeMap<String, Integer>();
    map.put("acb1", 5);
    map.put("bac1", 3);
    map.put("bca1", 20);
    map.put("cab1", 80);
    map.put("cba1", 1);
    map.put("abc1", 10);
    map.put("abc2", 12);

    // 默认情况下,TreeMap对key进行升序排序
    System.out.println("------------正常情况,TreeMap按key升序排序--------------------");
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        System.out.println(entry.getKey() + ":" + entry.getValue());
    }
}

修改TreeMap的排序方式,按key降序排序

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
public static void keyDownSort() {
    // TreeMap,按key降序排序
    // 降序排序比较器
    Comparator<String> keyComparator = new Comparator<String>() {

        @Override
        public int compare(String o1, String o2) {
            // TODO Auto-generated method stub
            return o2.compareTo(o1);
        }
    };

    Map<String, Integer> map = new TreeMap<String, Integer>(keyComparator);
    map.put("acb1", 5);
    map.put("bac1", 3);
    map.put("bca1", 20);
    map.put("cab1", 80);
    map.put("cba1", 1);
    map.put("abc1", 10);
    map.put("abc2", 12);

    System.out.println("------------TreeMap按key降序排序--------------------");
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        System.out.println(entry.getKey() + ":" + entry.getValue());
    }
}

按Value排序

以下只演示按TreeMap按Value升序排序,这同样适用于HashMap。

修改TreeMap的排序方式,按Value升序排序

注意:正常情况下Map是不可以使用Collections.sort()方法进行排序的,不过可以将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
public static void valueUpSort() {
    // 默认情况,TreeMap按key升序排序
    Map<String, Integer> map = new TreeMap<String, Integer>();
    map.put("acb1", 5);
    map.put("bac1", 3);
    map.put("bca1", 20);
    map.put("cab1", 80);
    map.put("cba1", 1);
    map.put("abc1", 10);
    map.put("abc2", 12);
    
    // 升序比较器
    Comparator<Map.Entry<String, Integer>> valueComparator = new Comparator<Map.Entry<String,Integer>>() {
        @Override
        public int compare(Entry<String, Integer> o1,
                Entry<String, Integer> o2) {
            // TODO Auto-generated method stub
            return o1.getValue()-o2.getValue();
        }
    };

    // map转换成list进行排序
    List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());

    // 排序
    Collections.sort(list,valueComparator);

    // 默认情况下,TreeMap对key进行升序排序
    System.out.println("------------map按照value升序排序--------------------");
    for (Map.Entry<String, Integer> entry : list) {
        System.out.println(entry.getKey() + ":" + entry.getValue());
    }
}

测试结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
------------正常情况,TreeMap按key升序排序--------------------
abc1:10
abc2:12
acb1:5
bac1:3
bca1:20
cab1:80
cba1:1
------------TreeMap按key降序排序--------------------
cba1:1
cab1:80
bca1:20
bac1:3
acb1:5
abc2:12
abc1:10
------------map按照value升序排序--------------------
cba1:1
bac1:3
acb1:5
abc1:10
abc2:12
bca1:20
cab1:80
两天 CSDN认证博客专家 CSDN认证企业博客
码龄16年 暂无认证
1
原创
13万+
周排名
93万+
总排名
18万+
访问
等级
1825
积分
39
粉丝
78
获赞
10
评论
327
收藏
私信

分类专栏

常见配置文件语言: INI, XML, JSON与YAML

werhahatewerhahate: yaml确实屌啊

  • Java中Map按Value排序

    weixin_44899539: 写的很不错表情包

  • 全面:一文看懂5G网络(接入网+承载网+核心网)

    DDR Official: 通俗易懂的好文章!

  • Redis核心解读–AOF与REWRITE机制

    mkl34367803: 文章写的很好,自动触发的条件,这个是redis的源码吗?base默认是auto-aof-rewrite-min-size 64mb是吧?

  • JPA @Table 注解

    dolagen: 阔以,感谢分享

  • 目录

    MFC
    1篇
  • 通信RF
    5篇
  • c/c++
    8篇
  • 数据结构算法
    9篇
  • JAVA
    47篇
  • 知识库
  • 云计算
    4篇
  • 大数据
    27篇
  • linux
    3篇
  • 设计模式
    2篇
  • 网络
    3篇
  • 数据库
    10篇
  • 为什么被折叠? 到【灌水乐园】发言
    前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值

    相关内容推荐

    如何制作产品浏览网站外国语网站制作手工淄博品牌网站建设制作qq空间怎么制作网站武威房产网站开发制作乐山网站制作建设六安网站制作起泡网站制作费属于服务还是劳务制作php模板网站忍者神龟电影网站制作怎么制作幼儿园网站丰县企业网站制作制作网站开发者是什么扬州网站制作报价自己制作的成绩查询网站温州瑞安市百度网站制作观山湖制作网站北京门户网站制作公司桐乡网站制作标准是什么荣成网站制作服务荔湾区网站制作哪家好咨询行业网站制作视频制作基础教程网站公司制作网站计入哪个科目怎么免费制作个网站旅游景点网站制作步骤h5网站制作心得与收获邯郸企业网站制作费用工程力学论文网站制作百度网站如何制作动态图标深圳h5网站制作公司音乐网站模板制作奶茶金属感海报制作网站诸暨网站制作需要哪些人龙岗免费的网站制作桂林制作网站哪家好网页制作dw接私活网站卡通logo制作网站美剧网站制作雪糕网站LOGO制作小玩具sql制作个人简历网站免费的思维导图制作网站亿凡科技制作网站建设互动创意制作网站网站内部制作流程网站电影海报制作学习渲染制作哪个网站好昌邑中英文网站制作免费制作博客的网站制作网站英语教程视频网站制作最新软件兴仁县网站制作东莞公司制作网站幸运儿电影网站制作美国中古网站制作免费制作宣传页的网站西城制作网站公司北京网站设计制作是什么宝安h5网站制作哪家强福州哪里会网站制作的网站制作好了如何上传怎么可以自己制作网站制作php模板网站农夫网站制作干花如何制作数一个人的网站ppt音乐制作网站下载网站制作表格莱阳网站制作公司自己制作购物网站计算机技术网站制作头像芦苞外贸型网站制作疯丫头网站制作视频咋样制作收费网站网站建设网站制作网站优化成都制作商城网站淄博品牌网站建设制作如何使用表格制作网站首页新绛网站制作系统安徽合肥网站制作公司免费做ppt的网站制作如何在阿里制作网站吴君如电影网站制作房产网站制作24小时接单vr网站制作企业绵阳网站制作厂家沈阳怎么制作网站程序90设计网站制作wix网站制作免费版功能制作一个彩票网站的流程淮安网站开发制作莱城区网站制作天津网站制作表格教程濮阳政府网站制作临海网站制作好了如何上线惠州翻译网站制作莆田制作外贸网站最好的免费网站制作大渡口网站制作电话樟木头技术好的网站制作盐城网站建设制作公司吕梁网站制作厂家朝阳酒店网站制作虎课网网站制作教学株洲h5页面制作网站制作网站方法视频拱墅中小企业网站制作贵阳网站建设制作多少钱乳山网站制作哪家强免费制作照片墙的网站网站电脑端后台怎么制作雅安外贸网站制作推广双语网站制作哪里好学习制作网站有哪些合肥网站建设制作流程日本房地产网站制作聊城定制网站制作公司日照集团网站制作倍可亲网站制作干花优秀网站制作怎么做艺术 制作网站城关网站制作邯郸企业网站制作费用东城高品质网站制作jquery制作网站h5制作模板哪些网站不要钱珠海微信公众号小程序制作网站浙江企业网站建设制作多少钱网站制作计划安排app手工蜂蜜口红制作网站论坛晋城网站前端制作ios制作网站的应用莱山区上市公司网站制作HS网站制作网站制作前文件怎么配置德克士网站制作起泡中山旅游网站制作兰州网站制作要点搜索引擎网站制作干花舟山网页制作和网站设计哪个好网站制作哪个专业最好商业网站制作平台我的家乡网站制作报告制作网站如何编程梦创义网站制作通化网站制作价格制作小程序网站我的家乡网站制作教程海航网站制作书签靠谱网站如何制作52电影网站制作淘宝公告制作网站北关区网站制作推广哪家的正规网站制作常用什么语言单页面手机网站制作c 制作网站链大沥营销网站制作怎么制作响应式网站模板3d 制作网站ppt制作网站小程序诸暨制作漫画的网站有哪些游戏网站在线制作宁海企业网站制作好吗道滘电子网站制作哪正规解禁电影网站制作云阳市网站制作案例钱包网站制作冰淇淋龙岗免费的网站制作12306网站制作壁纸广东数字网站制作诚信互利如何网站制作书签手绘全景网站制作哪家质量好网站首页制作要素如何制作网站搜索框网站制作 亿数在线凤凰小说网站制作制作网站运营金管家网站制作公司齐齐哈尔网站制作推广义乌网站制作的网站制作赌博娱乐网站office如何制作网站无锡网站制作引荐新互动网络衢州哪个网站有制作艺术照科技网站制作起泡苍南制作网站时如何做按钮如何制作一款网站软件吉林制作网站四会网站建设制作厂家钱来制作网站网站制作收费表资阳网站制作订做教师提高ppt制作的网站在线制作眨眼图片网站影视制作软件下载电影网站台州网站制作表情包制作图片编辑网站12306网站制作壁纸免费制作空间的网站ps制作网站首页面步骤自己制作游戏网站

    合作伙伴

    深圳网站优化推广公司

    龙岗网络公司
    深圳网站优化
    龙岗网站建设
    坪山网站建设
    百度标王推广
    天下网标王
    SEO优化按天计费
    SEO按天计费系统