더북(TheBook)

3.3.2 Comparator 인터페이스


이제 문자열을 사전 순서가 아니라 길이가 증가하는 순서로 비교한다고 하자. String 클래스는 compareTo 메서드를 두 가지 방법으로 구현하지 못한다. 어쨌든 String 클래스는 우리가 소유한 클래스가 아니므로 수정할 수도 없다.

이런 상황을 다룰 수 있는 Arrays.sort 메서드의 두 번째 버전이 있다. 이 버전은 배열과 비교자(comparator)를 매개변수로 받는다(비교자는 Comparator 인터페이스를 구현하는 클래스의 인스턴스다).

public interface Comparator<T> {

    int compare(T first, T second);

}


문자열을 길이로 비교하려면 Comparator<String>을 구현하는 클래스를 정의해야 한다.

class LengthComparator implements Comparator<String> {

    public int compare(String first, String second) {

        return first.length() - second.length();

    }

}

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