객체의 여러 정렬 기준을 분리합니다.
Comparable은 타입의 자연 순서를, Comparator는 사용 지점의 별도 정렬 정책을 표현합니다. comparing과 thenComparing으로 여러 기준을 조합할 수 있습니다.
예제에서 Comparator.comparing(Type::property) 부분부터 찾으세요. 선언 타입, 실제 객체와 반환값을 한 줄씩 따라가면서 컴파일 단계에서 잡히는 문제와 실행 중 생기는 문제를 구분하세요.
비교 함수는 일관되고 추이적이어야 합니다. a-b 방식은 overflow가 가능하므로 Integer.compare나 comparingInt를 사용합니다.
정렬 기준을 도메인 이름으로 상수화하면 여러 화면과 서비스에서 같은 정책을 재사용할 수 있습니다.
현재 코드를 먼저 실행해 출력과 타입 흐름을 확인한 뒤 점수가 같을 때 이름 오름차순으로 정렬하세요.
Collections.sort는 원본 목록을 바꾸고 stream.sorted는 새 흐름을 만듭니다.
직접 바꿔보세요점수가 같을 때 이름 오름차순으로 정렬하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.