함수형 인터페이스로, 두 개의 객체를 인자로 받아 그들의 순서를 비교하는 메서드인
compare을 제공하여 객체의 정렬을 가능하게 한다.
@FunctionalInterface
public interface Comparator<T> {
int compare(T o1, T o2);
}
구현 반환 값이 Comparator인 메서드를 할당한다.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
Comparator<String> lengthComparator = (str1, str2) -> Integer.compare(str1.length(), str2.length());
Comparator<String> desc = (str1, str2) -> str1.compareTo(str2);
Collections.sort(List<T> list, Comparator<? super T> c)
람다식을 인자로 받는 메서드로, Comparator에 의해 유도된 순서에 따라 List를 정렬한다.
import java.util.*;
public class LambdaSortExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
// 문자열을 길이에 따라 정렬하는 Comparator 람다식
Comparator<String> lengthComparator =
(str1, str2) -> Integer.compare(str1.length(), str2.length());
// 리스트를 정렬
Collections.sort(names, lengthComparator);
/*
정렬된 리스트:
Alice
Bob
Charlie
David */
System.out.println("정렬된 리스트:");
for (String name : names) {
System.out.println(name);
}
}
}