2017-10-26 14 views
2

두 가지 기준으로 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> caseInsensitiveStrings = 
    new TreeSet<>(String.CASE_INSENSITIVE_ORDER.reversed()); 
+0

가능한 복제 [자바 8 비교기 역 (https://stackoverflow.com/questions/32995559/reverse-a- :

Set<String> ser3 = new TreeSet<>(/* here comparator */); 
kryger

답변

4

는 그냥 CASE_INSENSITIVE_ORDER 비교 역 comparator-in-java-8)
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); 
    } 
});