树形图的比较器

时间:2017-08-05 20:54:24

标签: java

如何正确实现Treemap的Comparator? 这应该:  1.按行的长度按降序对单词进行排序。  2.字母长度相等的单词。

class Test implements Comparator<String> {

    public static SortedMap<String, String> doSort(String str) {
        Comparator<String> comparator = new Test();
        SortedMap<String, String> map = new TreeMap<>(comparator);

        //do something to input String

        return map;
    }


    @Override
    public int compare(String o1, String o2)
    {
        return o2.length() - o1.length();
    }
}

那够了吗? 如何在第二回合添加字母排序?

1 个答案:

答案 0 :(得分:1)

假设您使用的是Java 8+,可以使用lambda(例如

)编写
Comparator<String> comparator = (a,b) -> {
    int r = Integer.compare(a.length(), b.length());
    if (r != 0) {
        return r;
    }
    return a.compareTo(b);
};

在Java 7及更早版本中,它可能会执行

Comparator<String> comparator = new Comparator<String>() {
    public int compare(String a, String b) {
        int r = Integer.compare(a.length(), b.length());
        if (r != 0) {
            return r;
        }
        return a.compareTo(b);
    }
};