常会有这样的需求,这里记录下。
有个map:
Map<Integer,Integer> map = new HashMap<>();
map.put(1,5);
map.put(3,4);
map.put(2,4);
对其排序:
- 拿出map中的Entry成为一个列表
- 调用列表
sort
方法,传入Comparator
Comparator
的比较规则自己定义,这里是:按值大小排序,若值相同,按key大小排序
List<Map.Entry<Integer,Integer>> list = new ArrayList<>(map.entrySet());
list.sort(new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
if (o1.getValue().equals(o2.getValue())) {
return o1.getKey().compareTo(o2.getKey());
}
return o1.getValue().compareTo(o2.getValue());
}
});
}
这样可得到排好序的list:
[2=4, 3=4, 1=5]