Lined Notebook

Comparable와 Comparator의 차이

by HeshAlgo

컬렉션을 정렬하는데 필요한 메서드

Arrays.sort()는 사실상 해당 타입 클래스의 Comparable의 구현에 의해 정렬되었던 것이다.

 

1. Comparable

  • 정의
    - 기본적으로 적용되는 정렬 기준이 되는 메서드를 정의하는 인터페이스
    - Integer, Double 클래스 : 오름차순 정렬
    - String 클래스 : 사전순 정렬

  • 구현 방법
    - Comparable interface를 implements 후 compareTo() 메서드를 오버라이드한다.
    - 
    compareTo() 메서드 작성법
    현재 객체 < 파라미터로 넘어온 객체 : 음수 리턴
    현재 객체 = 파라미터로 넘어온 객체 : 0 리턴
    현재 객체 > 파라미터로 넘엉노 객체 : 양수 리턴

 

 

2. Comparator

  • 정의
    - 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때 사용한다.
    - 내림차순으로 정렬 할 때 많이 사용한다.

  • 구현 방법
    - Comparator interface를 implements 후 compare() 메서드를 오버라이드한다.
    - compare() 메서드 작성법
    첫 번째 파라미터로 넘어온 객체 (o1) < 두 번째 파라미터로 넘어온 객체 (o2) : 음수 리턴 (내림차순)
    첫 번째 파라미터로 넘어온 객체 (o1) = 두 번째 파라미터로 넘어온 객체 (o2) : 0 리턴
    첫 번째 파라미터로 넘어온 객체 (o1) > 두 번째 파라미터로 넘어온 객체 (o2) : 양수 리턴 (오름차순)
  • 사용 방법 예시

오름차순 결과

※ 내림차순을 원할 경우 compare() 메서드 내의 매개변수 o1과 o2의 값을 서로 바꾸기

 

 

 

 

 

블로그의 정보

꾸준히 공부하는 개발 노트

HeshAlgo

활동하기