더북(TheBook)

3.3.1 Comparable 인터페이스


객체의 배열을 정렬한다고 하자. 정렬 알고리즘은 요소를 비교해서 순서가 어긋나 있으면 재배치하는 일을 반복한다. 물론 비교하는 규칙은 클래스마다 다르다. 그리고 정렬 알고리즘은 클래스가 제공하는 메서드를 호출할 수 있어야 한다. 모든 클래스가 호출될 메서드를 무엇으로 할지 합의하면 정렬 알고리즘은 정렬을 수행할 수 있다. 바로 이런 상황에 인터페이스를 사용한다.

어떤 클래스의 객체를 정렬하려면 해당 클래스가 Comparable 인터페이스를 구현해야 한다. 이 인터페이스와 관련해 기술적으로 중요한 점이 하나 있다. 정렬을 수행할 때 문자열 대 문자열, 직원 대 직원 식으로 비교한다. 그래서 Comparable 인터페이스는 타입 매개변수를 받는다.

public interface Comparable<T> {

    int compareTo(T other);

}


예를 들어 String 클래스는 Comparable<String>을 구현하므로 StringcompareTo 메서드는 다음 시그너처를 가진다.

int compareTo(String other)


Note ≣

Comparable이나 ArrayList처럼 타입 매개변수를 받는 타입은 제네릭(generic) 타입이다. 제네릭 타입은 6장 제네릭 프로그래밍에서 자세히 알아본다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.