목차
1. 람다식
2. 함수형 인터페이스
3. Stream
자바 8에서 새롭게 도입된 익명 함수입니다.
📌 예제 (기존 방식 vs 람다식)
interface MyFunction {
public int max(int a, int b);
}
public class Test {
public static void main(String[] args) {
// 1. 익명 클래스 사용
MyFunction mf1 = new MyFunction() {
public int max(int a, int b) {
return a > b ? a : b;
}
};
// 2. 람다식 사용
MyFunction mf2 = (a, b) -> a > b ? a : b;
System.out.println(mf2.max(5, 10)); // 출력: 10
}
}
함수형 인터페이스는 단 하나의 추상 메서드만 가지는 인터페이스입니다.
| 인터페이스 | 매개변수 | 반환값 | 메서드 | 설명 |
|---|---|---|---|---|
| Runnable | 없음 | 없음 | run() | 쓰레드 작업 등 |
| Consumer | 있음 | 없음 | accept(T t) | 소비용 (출력 등) |
| Supplier | 없음 | 있음 | get() | 공급용 (값 제공) |
| Function<T, R> | 있음 | 있음 | apply(T t) | 입력 → 출력 변환 |
| Predicate | 있음 | boolean | test(T t) | 조건 판단 (true/false) |
함수형 인터페이스는 @FunctionalInterface 애너테이션을 붙여 명시적으로 선언할 수 있습니다.
자바에서 컬렉션을 처리하는 현대적인 방식입니다.
📌 예제 1 – 배열 스트림 처리
int[] numbers = {1, 2, 3, 4, 5};
Arrays.stream(numbers).forEach(number -> System.out.println(number));
📌 예제 2 – List 컬렉션 처리
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
names.forEach(name -> System.out.println(name));