【问题标题】:How to sort TreeMap by value not by Key [duplicate]如何按值而不是键对TreeMap进行排序[重复]
【发布时间】:2012-12-19 01:39:36
【问题描述】:

可能重复:
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

【问题讨论】:

标签: java treemap


【解决方案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 并将此方法添加到其中。请注意,比较器允许重复值,因为它从不返回 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多