#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());
}
});
您所说的“对地图排序”是什么意思?地图一般不能任意排序