【问题标题】:Sort list with two specifications具有两种规格的排序列表
【发布时间】:2018-04-07 12:19:49
【问题描述】:

我想使用两个条件对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 */);

【问题讨论】:

标签: java comparator case-insensitive treeset


【解决方案1】:

只需反转CASE_INSENSITIVE_ORDER 比较器:

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

【讨论】:

    【解决方案2】:
    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);
        }
     });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 2017-10-15
      • 2016-05-22
      • 1970-01-01
      相关资源
      最近更新 更多