首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#Java集合HashMap

#Java集合HashMap
EN

Stack Overflow用户
提问于 2016-03-10 14:57:49
回答 1查看 64关注 0票数 1

我希望按值按降序排列映射,并仅打印具有最高值的键注意:如果两个键具有相同的值,则打印多个键

代码语言:javascript
复制
 map.put(5,3);
    map.put(4,1);
    map.put(2,2);
    map.put(10,3);



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

        Collections.sort(list, new Comparator<Map.Entry<Integer,Integer>>(){
            public int compare(Map.Entry<Integer,Integer> obj1, Map.Entry<Integer,Integer> obj2){
                return (obj2.getValue().compareTo(obj1.getValue()));
            }

        });

Now i got output 5,10 but i want output as 10,5
EN

回答 1

Stack Overflow用户

发布于 2016-03-10 15:01:00

如果您希望根据键进行二次排序(即,如果值相等,则按降序排序be键),则为值相等的情况添加一个条件:

代码语言:javascript
复制
    Collections.sort(list, new Comparator<Map.Entry<Integer,Integer>>(){
        public int compare(Map.Entry<Integer,Integer> obj1, Map.Entry<Integer,Integer> obj2){
            if (!obj2.getValue().equals(obj1.getValue()))
                return (obj2.getValue().compareTo(obj1.getValue()));
            else
                return (obj2.getKey().compareTo(obj1.getKey()));
        }

    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35909633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档