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

标签 java arrays collections set comparator

我正在尝试使用自定义排序功能来实现树集。我已经传递了保存排序逻辑的比较器对象。

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]

最佳答案

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

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

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

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

关于java - 使用自定义排序功能实现 Treeset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32142636/

相关文章:

java - 将 FileOutputStream 重定向到控制台 - Java

javascript - react 突出显示和切片长文本

sorting - JAXB 强制对集合进行排序

java - Map.get(Object key) 不(完全)通用的原因是什么

C:在一个数组中切换两个结构

java - 如何在 Java 中将 Map 转换为 List?

java - 提交表单数据后出现以下问题

java - java中可能有一个不是方法的函数吗?

java - 类似实用程序的 Activity - SensorManager

java - 从字符串中的byte[]到字符串?