我正在尝试使用自定义排序功能实现treeset。我已经通过了包含排序逻辑的比较器对象。
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]
答案 0 :(得分:4)
如果你使用的是Java 8,你可以简单地写一下:
Set<String> ts = new TreeSet<>(new MyComp().reversed());
Java 8之前有相同的功能(自Java 5起):
Set<String> ts = new TreeSet<String>(Collections.reverseOrder(new MyComp()));
答案 1 :(得分:2)
尝试:
bindingexpression path error 'Name'property not found on 'object'
答案 2 :(得分:0)
如果你想要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);
}
}