#Java集合哈希映射

#Java集合哈希映射,java,Java,我想按值降序对映射进行排序,并只打印具有最高值的键 注意:如果两个键的值相同,则打印多个键 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 =

我想按值降序对映射进行排序,并只打印具有最高值的键 注意:如果两个键的值相同,则打印多个键

 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
map.put(5,3);
图.put(4,1);
map.put(2,2);
图.put(10,3);
Set=map.entrySet();
列表=新的ArrayList(集合);
Collections.sort(list,newcomparator(){
公共整数比较(Map.Entry obj1、Map.Entry obj2){
返回(obj2.getValue().compareTo(obj1.getValue());
}
});
现在我得到了输出5,10,但我希望输出为10,5

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

    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()));
        }

    });
Collections.sort(列表,新比较器(){
公共整数比较(Map.Entry obj1、Map.Entry obj2){
如果(!obj2.getValue().equals(obj1.getValue()))
返回(obj2.getValue().compareTo(obj1.getValue());
其他的
返回(obj2.getKey().compareTo(obj1.getKey());
}
});
您所说的“对地图排序”是什么意思?地图一般不能任意排序