개발 공부/Java & Spring

13. Comparator와 Comparable

빵다희 2023. 1. 14. 23:18
Comparator, Comparable
: 컬렉션을 정렬하는데 필요한 메서드를 정의한 인터페이스, 두 객체를 비교할 수 있는 메소드를 갖고 있다. 

* Comparable

컬렉션이 기본으로 갖고 있는 정렬기준을 구현하는데 사용.

Integer와 같은 wrapper클래스와 String, Date, File과 같은 클래스에서 구현하고 있다.

import java.util.*; 

class ComparatorEx {
   public static void main(String[] args){
   	String[] strArr = {"cat", "Dog", "lion", "tiger"};
    
    Arrays.sort(strArr); // String의 기본정렬
    System.out.println("strArr="+Arrays.toString(strArr));
    // 실행결과 : strArr=[Dog, cat, lion, tiger]
    
    Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); // 대소문자 구분안함
    System.out.println("strArr="+Arrays.toString(strArr));
    // 실행결과 : strArr=[cat, Dog, lion, tiger]
   }
}

* Comparator

컬렉션이 기본으로 갖고 있는 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용.

import java.util.*; 

class ComparatorEx {
   public static void main(String[] args){
   	String[] strArr = {"cat", "Dog", "lion", "tiger"};
    
    Arrays.sort(strArr, new Descending()); // 역순 정렬
    System.out.println("strArr="+Arrays.toString(strArr));
    // 실행결과 : strArr=[tiger lion, cat, Dog]
   }
}

class Descending implements Comparator {
	public int compare(Objet o1, Object o2){
    	if(o1 instanceof Comparable && o2 instanceof Comparable){
        	Comparable c1 = (Comparable)o1;
            Comparable c2 = (Comparable)o2;
            return c1.compareTo(c2) * -1; //-1을 곱해서 기본정렬방식의 역으로 변경한다. 
        }
        return -1; 
    }
}

 

728x90
반응형

'개발 공부 > Java & Spring' 카테고리의 다른 글

15. 이진 검색 트리와 TreeSet  (0) 2023.01.17
14.HashSet  (0) 2023.01.16
12. java.time 패키지 파싱과 포맷  (1) 2022.12.28
11. java.time 패키지  (0) 2022.12.28
10. 래퍼 클래스(wrapper 클래스)  (0) 2022.12.07