实现Map按key或按value排序
原理思路:用List实现排序,然后将List中的值遍历存入到LinkedHashMap
实现方式:
//这里将map.entrySet()转换成list
List<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(paramMap.entrySet());
//然后通过比较器来实现排序
Collections.sort(list,new Comparator<Map.Entry<String,Integer>>() {
//降序排序
public int compare(Entry<String, Integer> o1,Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
Map<String, Integer> resultMap = new LinkedHashMap<String,Integer>();
for(Entry<String, Integer> map : list){
resultMap.put(map.getKey(), map.getValue());
}
备注:它虽然增加了时间和空间上的开销,但是通过维护一个运行于所有条目的双向链表,LinkedHashMap保证了元素迭代的顺序。该迭代顺序可以是插入顺序或者是访问顺序