Java HashMap 排序
HashMap是无序集合,但会有对HashMap的value进行排序的需求,下面整理了一种方法。
对key排序可以用TreeMap
转为list集合 重写比较器
1. 键值对全部转入list
//键值对全部转入list。
List<Map.Entry<Integer, Integer>> list = new ArrayList<Map.Entry<Integer, Integer>>(set);
Collections.sort(list, new Comparator<>(){
@Override
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
if(o1.getValue() < o2.getValue()) {
return -1;
} else if(o1.getValue() == o2.getValue()) {
if(o1.getKey() > o2.getKey()) {
return -1;
}
}
return 1;
}
});
2. 只将key转为list
//只将key转为list。
List<Integer> list = new ArrayList<Integer>(map.keySet());
Collections.sort(list, (a, b) -> {
int cnt1 = map.get(a), cnt2 = map.get(b);
return cnt1 != cnt2 ? cnt1 - cnt2 : b - a;
});