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