람다식은 익명 함수로, 코드를 더 간결하고 읽기 쉽게 작성할 수 있도록 도와준다. Java 8부터 도입되었으며, 함수형 프로그래밍 스타일을 지원한다.
(매개변수) -> { 실행 코드 }
(int x, int y) -> x + y;
x -> x * 2;
(int x, int y) -> {
int sum = x + y;
return sum;
}
람다식은 함수형 인터페이스(하나의 추상 메서드를 가지는 인터페이스)를 구현하는데 사용된다.
@FunctionalInterface
interface ExampleFunction {
int apply(int x, int y);
}
ExampleFunction add = (a, b) -> a + b;
System.out.println(add.apply(5, 3)); // 8
인터페이스 추상 메서드의 시그니처(매개변수, 반환 타입)을 일치하게 사용하면 된다.
List.sort()
default void sort(Comparator<? super E> c)
parameter: Comparator<? super E> c
Description: 리스트의 요소를 Comparator를 기준으로 정렬
Comparator 인터페이스
@FunctionalInterface // 인터페이스가 함수형 인터페이스임을 보장, 하나의 추상 메서드만 가지도록 제한 / 두 개 이상의 추상 메서드가 있으면 컴파일 오류가 발생
public interface Comparator<T> {
int compare(T o1, T o2); // 유일한 추상 메서드
}
---
names.sort((a, b) -> a.compareTo(b));