JAVA

Comparator와 Comparable

잔망루피 2021. 7. 8. 21:08

ComparatorComparable은 인터페이스로 컬렉션을 정렬하는데 필요한 메서드를 정의함.

Comparable을 구현하고 있는 클래스들은 주로 Integer와 같은 wrapper클래스와 String, Date, File과 같은 것들이다.

Comparable은 기본적으로 오름차순 정렬을 구현하는데 사용

Comparator를 구현해서 내림차순 또는 다른 기준으로 정렬되도록 할 수 있다.

 

static void sort(Object[] a)	// 객체 배열에 저장된 객체가 구현한 Comparable에 의한 정렬
static void sort(Objdect[] a, Comparator c)		// 지정한 Comparator에 의한 정렬

 

🟨 Comparator Example

Arrays.sort(str, new Comparator<String>(){
            @Override
            public int compare(String a, String b){
                return (b+a).compareTo(a+b);
            }
        });

Comparator 구현 예시

 

Arrays.sort(scores, new Comparator<int[]>(){
           @Override
            public int compare(int[] o1, int[] o2) {
                if(o1[0] < o2[0])
                    return 1;
                else if(o1[0] == o2[0]) {
                    if(o1[1] > o2[1])
                        return 1;
                    else
                        return -1;
                }
                else return -1;
            }
        });

첫번째 인자가 두번째 인자보다 작다면 음수, 같다면 0, 크다면 양수를 리턴

위의 예제는 0열은 내림차순, 1열은 오름차순 정렬

 

 


참고 👇

 

자바의 정석 3판

 

https://www.daleseo.com/java-comparable-comparator/

 

[Java] 객체 정렬하기 1부 - Comparable vs Comparator

Engineering Blog by Dale Seo

www.daleseo.com

반응형

'JAVA' 카테고리의 다른 글

StringBuilder  (0) 2021.07.17
HashSet  (0) 2021.07.14
Stack  (0) 2021.07.08
String  (0) 2021.07.06
wrapper 클래스  (0) 2021.07.05