더북(TheBook)

실제로 비교를 수행하려면 이 클래스의 인스턴스를 만들어야 한다.

Comparator<String> comp = new LengthComparator();

if (comp.compare(words[i], words[j]) > 0) ...


이 호출을 words[i].compareTo(words[j])와 대조해 보자. compare 메서드는 문자열 자체가 아니라 비교자 객체로 호출한다.

Note ≣

LengthComparator 객체에는 상태가 없지만 여전히 인스턴스를 만들어야 한다. compare 메서드는 정적 메서드가 아니므로 호출하려면 인스턴스가 필요하다.


배열을 정렬하려면 LengthComparator 객체를 Arrays.sort 메서드에 전달해야 한다.

String[ ] friends = { "Peter", "Paul", "Mary" };

Arrays.sort(friends, new LengthComparator());


이제 friends 배열은 ["Paul", "Mary", "Peter"] 또는 ["Mary", "Paul", "Peter"]가 된다.

람다 표현식으로 Comparator를 훨씬 쉽게 사용하는 방법도 있다. 이 방법은 3.4.2 함수형 인터페이스에서 알아본다.

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