Comparator 팩토리와 유창한 정렬
Comparator 팩토리 메서드로 읽기 쉽고 조합 가능한 정렬 규칙을 구성합니다.
코드 비교
✕ Anonymous comparator
people.sort(new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
int byName = a.name().compareTo(b.name());
return byName != 0 ? byName : Integer.compare(a.age(), b.age());
}
});
✓ Java 8+
people.sort(Comparator.comparing(Person::name)
.thenComparingInt(Person::age));
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
조합 가능
정렬 규칙을 자연스럽게 연결할 수 있습니다.
더 쉬운 검토
정렬 키와 우선순위가 명확하게 드러납니다.
더 안전한 비교
특화된 헬퍼를 사용해 오류가 발생하기 쉬운 산술 비교를 피합니다.
이전 방식
익명 Comparator
모던 방식
Comparator 팩토리
JDK 버전
8
난이도
초급
JDK 지원
Comparator 팩토리와 유창한 정렬
사용 가능
JDK 8 (2014년 3월) 이후 사용 가능
동작 원리
Comparator 팩토리는 정렬 방식을 선언적으로 표현하고, 직접 분기문을 작성하지 않고도 기본 키와 보조 키를 조합합니다.
관련 문서
증명