
두 객체를 비교하는 기준을 사용자가 정의할 수 있는 인터페이스
Comparator<T> c = new Comparator<>() {};
compare 메서드를 정의Comparator<T> c = new Comparator<>() {
public int compare(T o1, T o2) {
return o1 - o2;
}
};
Comparator에서 제공하는 함수 사용c.reverse();
문자열 배열을 두 번째 문자의 사전 순으로 정렬하고 싶다면?
import java.util.*;
class Main {
public static void main(String[] args) {
String[] words = {"apple", "banana", "cold", "error"};
Comparator com = new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.charAt(1) - o2.charAt(1);
}
};
Arrays.sort(words, com);
for(String word : words) {
System.out.println(word);
}
}
}
실행 결과
banana
cold
apple
error
Java 8부터 지원하는 람다 표현식과 메서드 레퍼런스를 이용하면 더 간단하게 구현 가능
Comparator<String> com = (o1, o2) -> o1.charAt(1) - o2.charAt(1);
Comparator<Person> byName = Comparator.comparing(Person::getName);