본문 바로가기
  • 주니어 개발자의
    RESTful 성장기
Web/Java

Collections Framework (4) Comparator, Comparable

by 돌건 2022. 2. 17.

Comparator, Comparable

이 둘은 모두 인터페이스로, 컬렉션을 정렬하는데 필요한 메서드를 정의하고 있다. Arrays.sort()를 통해서 정렬이 가능한 클래스들의 경우 모두 Comparable 인터페이스를 구현하고 있다. 대표적으로 Wrapper 클래스들과 String, Date, File과 같은 클래스들이 있다. 
public interface Comparator {
    int compare(Object o1, Object o2);
}

public interface Comparable {
    int compareTo(Object o);
}​

compareTo()의 경우 비교하는 두 객체가 같으면 0, 비교하는 값보다 작으면 음수, 크면 양수를 반환하도록 구현해야 한다. compare()의 경우에도 비교해서 0, 음수, 양수 중 하나를 반환하도록 구현해야 한다. 

Comparable 인터페이스를 구현한 클래스들은 기본적으로 오름차순으로 정렬하도록 구현이 되어있다. 만약 특정 기준으로 정렬을 하고 싶은 경우에는 Comparator를 구현해 정렬할 수 있다.

 

참고

Java의 정석 (남궁 성 지음)

댓글