Possible Duplicate:
TreeMap sort by value
嗨,我想按值而不是按键对 TreeMap 集合进行排序。例如,
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
最佳答案
你需要一个特殊的迭代器,试试这个
...
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 并向其中添加此方法。请注意,比较器允许重复值,因为它永远不会返回 0。
关于java - 如何按值而不是键对 TreeMap 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944353/