前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Map元素排序

Map元素排序

作者头像
LiosWong
发布2019-11-06 17:46:48
5620
发布2019-11-06 17:46:48
举报
文章被收录于专栏:后端沉思录后端沉思录

开发中会遇到对Map元素排序的问题,下面介绍下如何根据key、value排序.

key排序
  • 使用TreeMap的Comparator比较 TreeMap默认是升序的,如果需要自定义排序规则,可以使用Comparator:
代码语言:javascript
复制
Map<String, Integer> map = new TreeMap<String, Integer>(new Comparator<String>() {
            // 按照key排序
            @Override
            public int compare(String o1, String o2) {
                // 按照key降序排列
                return Integer.valueOf(o2).compareTo(Integer.valueOf(o1));
            }
        }) {
            {
                put("1", 9);
                put("3", 6);
                put("5", 2);
            }
        };

        for (Map.Entry c : map.entrySet()) {
            System.out.println(c.getKey() + "=" + c.getValue());
        }
  • java.util.Collections的sort方法
代码语言:javascript
复制
Map<String, Integer> map = new TreeMap<String, Integer>() {
            {
                put("1", 9);
                put("3", 6);
                put("5", 2);
            }
        };

        List<Map.Entry<String, Integer>> entryList = new ArrayList<Map.Entry<String, Integer>>(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) {
                // 根据key降序排列
                return Integer.valueOf(o2.getKey()).compareTo(Integer.valueOf(o1.getKey()));
            }
        });

        for (Map.Entry c : entryList) {
            System.out.println(c.getKey() + "=" + c.getValue());
        }
value排序
  • java.util.Collections的sort方法 由上可知,对value排序也很容易实现:
代码语言:javascript
复制
Map<String, Integer> map = new TreeMap<String, Integer>() {
            {
                put("1", 9);
                put("3", 6);
                put("5", 2);
            }
        };

        List<Map.Entry<String, Integer>> entryList = new ArrayList<Map.Entry<String, Integer>>(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) {
                // 根据value降序排列
                return o2.getValue().compareTo(o1.getValue());
            }
        });

        for (Map.Entry c : entryList) {
            System.out.println(c.getKey() + "=" + c.getValue());
        }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端沉思录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • key排序
  • value排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档