具有两种规格的排序列表
Sort list with two specifications
我想用两个条件对 TreeSet
进行排序。
Collections.reverseOrder()
和 String.CASE_INSENSITIVE_ORDER
我知道我可以用其中一个来完成:
Set<String> set1 = new TreeSet<>(Collections.reverseOrder());
Set<String> set2 = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
我应该如何实现比较器以在一个树集中获得这两个标准?
Set<String> ser3 = new TreeSet<>(/* here comparator */);
只需反转 CASE_INSENSITIVE_ORDER
比较器:
Set<String> caseInsensitiveStrings =
new TreeSet<>(String.CASE_INSENSITIVE_ORDER.reversed());
Set<String> caseInsensitiveStrings = new TreeSet<String>(new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
// throw new UnsupportedOperationException("Not supported yet.");
if(o1.equalsIgnoreCase(o2)){
return 0;
}else if(o1.compareTo(o2)== 1){
return -1;
}else if(o1.compareTo(o2)== -1){
return 1;
}
return o1.compareTo(o2);
}
});
我想用两个条件对 TreeSet
进行排序。
Collections.reverseOrder()
和 String.CASE_INSENSITIVE_ORDER
我知道我可以用其中一个来完成:
Set<String> set1 = new TreeSet<>(Collections.reverseOrder());
Set<String> set2 = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
我应该如何实现比较器以在一个树集中获得这两个标准?
Set<String> ser3 = new TreeSet<>(/* here comparator */);
只需反转 CASE_INSENSITIVE_ORDER
比较器:
Set<String> caseInsensitiveStrings =
new TreeSet<>(String.CASE_INSENSITIVE_ORDER.reversed());
Set<String> caseInsensitiveStrings = new TreeSet<String>(new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
// throw new UnsupportedOperationException("Not supported yet.");
if(o1.equalsIgnoreCase(o2)){
return 0;
}else if(o1.compareTo(o2)== 1){
return -1;
}else if(o1.compareTo(o2)== -1){
return 1;
}
return o1.compareTo(o2);
}
});