我希望按值按降序排列映射,并仅打印具有最高值的键注意:如果两个键具有相同的值,则打印多个键
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发布于 2016-03-10 15:01:00
如果您希望根据键进行二次排序(即,如果值相等,则按降序排序be键),则为值相等的情况添加一个条件:
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()));
}
});https://stackoverflow.com/questions/35909633
复制相似问题