TreeMap按照value进行排序

转自http://blog.csdn.net/liuxiao723846/article/details/50454622


TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序)。所以,TreeMap只能根据key来排序,是不能根据value来排序的(否则key来排序根本就不能形成TreeMap)。


今天有个需求,就是要根据treeMap中的value排序。所以网上看了一下,大致的思路是把TreeMap的EntrySet转换成list,然后使用Collections.sor排序。代码:

[java]  view plain  copy
  1. public static void sortByValue() {  
  2.         Map map = new TreeMap();  
  3.         map.put("a""dddd");  
  4.         map.put("d""aaaa");  
  5.         map.put("b""cccc");  
  6.         map.put("c""bbbb");  
  7.           
  8.         List> list = new ArrayList>(map.entrySet());  
  9.           
  10.         Collections.sort(list,new Comparator>() {  
  11.             //升序排序  
  12.             public int compare(Entry o1, Entry o2) {  
  13.                 return o1.getValue().compareTo(o2.getValue());  
  14.             }  
  15.         });  
  16.           
  17.         for (Entry e: list) {  
  18.             System.out.println(e.getKey()+":"+e.getValue());  
  19.         }  
  20.     }  

运行结果:

d:aaaa
c:bbbb
b:cccc
a:dddd


你可能感兴趣的:(TreeMap按照value进行排序)