사용자 정의 정렬: 객체들을 사용자가 정의한 기준에 따라 정렬할 수 있습니다.
compare(T o1, T o2): 두 객체 o1과 o2를 비교합니다.
equals(Object obj): 지정된 객체와 이 비교자가 같은지 비교합니다.
reversed(): 비교 순서를 반대로 하는 Comparator를 반환합니다.
thenComparing(Comparator<? super T> other): 추가적인 Comparator를 연쇄적으로 적용합니다.
thenComparing(Function<? super T,? extends U> keyExtractor): 키 추출 함수를 기반으로 하는 Comparator를 연쇄적으로 적용합니다.
thenComparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator): 키 추출 함수와 해당 키를 비교하는 Comparator를 기반으로 연쇄적으로 적용합니다.
thenComparingInt(ToIntFunction<? super T> keyExtractor): int 키를 추출하는 함수를 기반으로 하는 Comparator를 연쇄적으로 적용합니다.
thenComparingLong(ToLongFunction<? super T> keyExtractor): long 키를 추출하는 함수를 기반으로 하는 Comparator를 연쇄적으로 적용합니다.
thenComparingDouble(ToDoubleFunction<? super T> keyExtractor): double 키를 추출하는 함수를 기반으로 하는 Comparator를 연쇄적으로 적용합니다.
naturalOrder(): 자연 순서를 사용하는 Comparator를 반환합니다.
reverseOrder(): 역순 자연 순서를 사용하는 Comparator를 반환합니다.
nullsFirst(Comparator<? super T> comparator): null 값을 가진 요소를 우선하는 Comparator를 반환합니다.
nullsLast(Comparator<? super T> comparator): null 값을 가진 요소를 마지막으로 하는 Comparator를 반환합니다.
comparing(Function<? super T, ? extends U> keyExtractor): 키 추출 함수를 기반으로 하는 Comparator를 생성합니다.
comparing(Function<? super T, ? extends U> keyExtractor, Comparator<? super U> keyComparator): 키 추출 함수와 해당 키를 비교하는 Comparator를 기반으로 하는 Comparator를 생성합니다.
comparingInt(ToIntFunction<? super T> keyExtractor): int 키를 추출하는 함수를 기반으로 하는 Comparator를 생성합니다.
comparingLong(ToLongFunction<? super T> keyExtractor): long 키를 추출하는 함수를 기반으로 하는 Comparator를 생성합니다.
comparingDouble(ToDoubleFunction<? super T> keyExtractor): double 키를 추출하는 함수를 기반으로 하는 Comparator를 생성합니다.
Comparator<Person> comparator = Comparator
.comparing(Person::getName)
.thenComparingInt(Person::getAge);
-----
Comparator<String> comparator = Comparator
.nullsFirst(Comparator.naturalOrder())
.thenComparing(Comparator.reverseOrder());
-----
Comparator<Employee> comparator = Comparator
.comparing(Employee::getName)
.thenComparingInt(Employee::getAge)
.thenComparing(Employee::getEmail);
-----