1. 程式人生 > >TreeMap按照value進行排序

TreeMap按照value進行排序

TreeMap底層是根據紅黑樹的資料結構構建的,預設是根據key的自然排序來組織(比如integer的大小,String的字典排序)。所以,TreeMap只能根據key來排序,是不能根據value來排序的(否則key來排序根本就不能形成TreeMap)。

今天有個需求,就是要根據treeMap中的value排序。所以網上看了一下,大致的思路是把TreeMap的EntrySet轉換成list,然後使用Collections.sor排序。程式碼:

public static void sortByValue() {
		Map<String,String> map = new TreeMap<String,String>();
		map.put("a", "dddd");
		map.put("d", "aaaa");
		map.put("b", "cccc");
		map.put("c", "bbbb");
		
		List<Entry<String, String>> list = new ArrayList<Entry<String, String>>(map.entrySet());
		
		Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
            //升序排序
            public int compare(Entry<String, String> o1, Entry<String, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        });
		
		for (Entry<String, String> e: list) {
			System.out.println(e.getKey()+":"+e.getValue());
		}
	}

執行結果:

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