使用自定义排序功能实现 Treeset

Implement Treeset with custom sorting functionality

我正在尝试实现具有自定义排序功能的树集。我已经传递了包含排序逻辑的比较器对象。

import java.util.Comparator;
import java.util.TreeSet;

public class MySetWithCompr {

    public static void main(String a[]){

        TreeSet<String> ts = new TreeSet<String>(new MyComp());
        ts.add("Test1");
        ts.add("Test2");
        ts.add("Test3");
        ts.add("Test4");
        System.out.println(ts);
    }
}

class MyComp implements Comparator<String>{

    @Override
    public int compare(String str1, String str2) {
        return str1.compareTo(str2);
    }

}

上面的程序给出了下面的输出

[Test1, Test2, Test3, Test4]

请建议如何实现比较器逻辑以使结果相反

Expected Result : [Test4, Test3, Test2, Test1]

尝试:

class MyComp implements Comparator<String> {

    @Override
    public int compare(String str1, String str2) {
        return str2.compareTo(str1);
    }

}

如果您使用的是 Java 8,您可以简单地写:

Set<String> ts = new TreeSet<>(new MyComp().reversed());

在 Java 8 之前有相同的功能(自 Java 5):

Set<String> ts = new TreeSet<String>(Collections.reverseOrder(new MyComp()));

如果你想 desc 排序有两种方法:

第一个:

class MyComp implements Comparator<String> {
    @Override
    public int compare(String str1, String str2) {
        return str2.compareTo(str1);
    }
}

第二个:

class MyComp implements Comparator<String> {
    @Override
    public int compare(String str1, String str2) {
        return -1 * str1.compareTo(str2);
    } 
}