可能重复:
TreeMap sort by value
您好我想按值而不是按键对TreeMap Collection进行排序。例如,
TreeMap map=new TreeMap();
map.put(new Integer(100),"ccc");
map.put(new Integer(300),"bbb");
map.put(new Integer(200),"ddd");
map.put(new Integer(400),"aaa");
应该按照,
订购1) 400 -> aaa
2) 300 -> bbb
3) 100 -> ccc
4) 200 -> ddd
答案 0 :(得分:1)
你需要一个特殊的迭代器,试试这个
...
Iterator i = valueIterator(map);
while(i.hasNext()) {
System.out.println(i.next());
}
...
Iterator valueIterator(TreeMap map) {
Set set = new TreeSet(new Comparator<Map.Entry<Integer, String>>() {
@Override
public int compare(Entry<Integer, String> o1, Entry<Integer, String> o2) {
return o1.getValue().compareTo(o2.getValue()) > 0 ? 1 : -1;
}
});
set.addAll(map.entrySet());
return set.iterator();
}
输出
400=aaa
300=bbb
100=ccc
200=ddd
您可以扩展TreeMap并将此方法添加到其中。请注意,Comparator允许重复值,因为它永远不会返回0.