前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >map排序,根据key给map排序,根据value给map排序

map排序,根据key给map排序,根据value给map排序

作者头像
IT云清
发布2019-01-22 09:36:30
1.5K0
发布2019-01-22 09:36:30
举报
文章被收录于专栏:IT云清IT云清

1.根据key键给map排序

代码语言:javascript
复制
    public static void main(String[] args) {
        Map<Integer,String> map = new TreeMap<>(new Comparator<Integer>(){
            @Override
            public int compare(Integero1, Integer o2) {
                return o1-o2;//按照key顺序排列,o2-o1是逆序
            }
        });
        map.put(3, "China");
        map.put(8, "America");
        map.put(2, "Canada");
        map.put(1, "Franch");
        map.put(5, "Banana");
//map遍历
        Set<Integer> set = map.keySet();
        Iterator<Integer> iterator = set.iterator();
        while(iterator.hasNext()){
            Integer key2 = iterator.next();
            System.out.println(key2+"-------"+map.get(key2));
        }
    }

排序结果:

1-------Franch 2-------Canada 3-------China

5-------Banana 8-------America

注意:标红部分的对应关系,因为key是Integer,所以,比较器的泛型和参数 都是Integer.

2.根据value给map排序

代码语言:javascript
复制
    public static void main(String[] args) {
        TreeMap<Integer, String> map = new TreeMap<>();
        map.put(3, "China");
        map.put(8, "America");
        map.put(2, "Canada");
        map.put(1, "Franch");
        map.put(5, "Banana");

        ArrayList<Entry<Integer, String>> list =
                new ArrayList<Map.Entry<Integer, String>>(map.entrySet());

        Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() {
            @Override
            public int compare(Entry<Integer, String> o1,
                               Entry<Integer, String> o2) {
                return o1.getValue().compareTo(o2.getValue());//顺序
            }
        });

        for (Entry<Integer, String> entry : list) {
            System.out.println(entry.getKey()+"------"+entry.getValue());
        }
    }

排序结果:

8------America 5------Banana 2------Canada 3------China 1------Franch

如果想要逆序,改变o1和o2的顺序即可,蓝色部分改为:

o2.getValue().compareTo(o1.getValue())

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年08月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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