如何对Map进行按值(value)排序?

我想对Map进行按值(value)排序。如:
[("a",3),("b",1),("c",2)]
排序后为:[("b",1),("c",2),("a",3)]
我们知道TreeMap可以对key进行排序。
我想到的办法是将键值对封装成一个对象,对象包括属性key,value,然后他们放入List中,再进行排序。
不知道大家有什么更好的办法吗?

map内部是按照hash算法存储的,但如果能对map排序在某些时候还是有用的。
[code="java"]

/**
* @param h
* @return
* 实现对map按照value升序排序
*/
@SuppressWarnings("unchecked")
public static Map.Entry[] getSortedHashtableByValue(Map h) {
Set set = h.entrySet();
Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set
.size()]);
Arrays.sort(entries, new Comparator() {
public int compare(Object arg0, Object arg1) {
Long key1 = Long.valueOf(((Map.Entry) arg0).getValue().toString());
Long key2 = Long.valueOf(((Map.Entry) arg1).getValue().toString());
return key1.compareTo(key2);
}
});

    return entries;
}

[/code]

重定义一个TreeMap,改写public V put(K key, V value) 方法

。。TreeMap会自动排序map里的value。。。。