之前写过一篇TreeMap自定义排序的博客,不过那个是根据key的排序,如果想要根据value的值排序可以这样写:
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("aaa", 3);
map.put("bbb", 2);
map.put("ccc", 5);
map.put("ddd", 1);
ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String, Integer>>(){
public int compare(Entry<java.lang.String, Integer> arg0,
Entry<java.lang.String, Integer> arg1) {
return arg0.getValue()-arg1.getValue();
}
});
for(int i=0; i<list.size(); i++) {
Map.Entry<String, Integer> entry = list.get(i);
System.out.println("key "+entry.getKey()+"--------->value "+entry.getValue());
}
/*
* 如果想要将结果再放到一个map里面则可再new一个map,如此:map<String,ArrayList<Map.Entry<String,Integer>>
*/
输出结果:
key ddd--------->value 1
key bbb--------->value 2
key aaa--------->value 3
key ccc--------->value 5