繁体   English   中英

使用自定义排序功能实现树集

[英]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]

如果您使用的是Java 8,则只需编写以下内容:

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

Java 8(从Java 5开始)之前具有相同的功能:

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

尝试:

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 str2.compareTo(str1);
    }
}

第二:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM