排序列表有两个规格

时间:2017-10-26 08:03:13

标签: java comparator case-insensitive treeset

我想用两个标准对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 */);

2 个答案:

答案 0 :(得分:4)

只需反转CASE_INSENSITIVE_ORDER比较器:

Set<String> caseInsensitiveStrings =
    new TreeSet<>(String.CASE_INSENSITIVE_ORDER.reversed());

答案 1 :(得分:0)

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);
    }
 });