🔥 람다식이란?
람다식(Lambda Expression)은 자바 8(Java 8)에서 도입된 기능으로,
✅ 익명 함수(Anonymous Function)를 보다 간결하게 표현할 수 있는 문법
✅ 함수형 프로그래밍(Functional Programming)을 지원
✅ 코드를 간결하게 작성할 수 있도록 도와주는 기법
🏗 1. 함수형 프로그래밍(Functional Programming)이란?
함수형 프로그래밍이란?
- 프로그램을 함수(메소드) 단위로 작성하고, 데이터 처리를 함수에 맡기는 방식
- 메소드(객체 소속)와 함수(독립적 실행 코드)의 차이
- 메소드: 반드시 클래스 내부에 존재해야 함
- 함수: 클래스와 무관하게 독립적으로 실행될 수 있음
📌 자바는 원래 객체지향 언어이지만, 함수형 프로그래밍을 지원하기 위해 람다식을 도입
🎯 2. 람다식의 기본 개념
람다식은 이름이 없는 함수(익명 함수)를 표현하는 방법입니다.
일반적으로 다음과 같은 형태로 작성됩니다.
📌 람다식 기본 문법
(매개변수) -> { 실행 코드 }
✅ 예제 1: 두 수를 더하는 람다식
(int x, int y) -> { return x + y; }
✅ 예제 2: 매개변수가 하나인 경우
x -> { return x * 2; }
✅ 예제 3: 실행 코드가 한 줄이면 중괄호 생략 가능
(x, y) -> x + y
🛠 3. 람다식과 익명 구현 객체의 관계
자바에서는 람다식을 익명 구현 객체(Anonymous Implementation Object) 로 변환하여 실행합니다.
즉, 람다식은 사실상 익명 클래스를 줄여서 표현하는 방법입니다.
📌 익명 구현 객체 방식
interface Calculator {
int calculate(int x, int y);
}
public class Main {
public static void main(String[] args) {
Calculator add = new Calculator() {
@Override
public int calculate(int x, int y) {
return x + y;
}
};
System.out.println(add.calculate(5, 3)); // 8
}
}
✅ 위 코드를 람다식으로 변환
Calculator add = (x, y) -> x + y;
System.out.println(add.calculate(5, 3)); // 8
📌 결과는 동일하지만 코드가 훨씬 간결해짐! 🚀
🎯 4. 람다식을 사용하기 위한 조건
람다식은 함수형 인터페이스(Functional Interface)에서만 사용 가능합니다.
즉, 추상 메소드가 1개만 있는 인터페이스에서만 람다식을 사용할 수 있습니다.
📌 함수형 인터페이스(Functional Interface) 예제
@FunctionalInterface
interface Calculator {
int calculate(int x, int y);
}
✅ 추상 메소드가 1개만 존재하므로 람다식 사용 가능!
✅ 만약 2개 이상의 추상 메소드가 존재하면 람다식 사용 불가능!
🏗 5. 람다식을 활용한 데이터 처리
람다식을 사용하면 데이터 처리 방식을 함수로 전달할 수 있음
즉, 함수를 변수처럼 사용 가능!
📌 람다식을 활용한 데이터 처리 예제
public class Main {
public static void processNumbers(int a, int b, Calculator calculator) {
int result = calculator.calculate(a, b);
System.out.println("결과: " + result);
}
public static void main(String[] args) {
processNumbers(5, 3, (x, y) -> x + y); // 더하기
processNumbers(5, 3, (x, y) -> x - y); // 빼기
processNumbers(5, 3, (x, y) -> x * y); // 곱하기
}
}
✅ 함수를 변수처럼 전달하여 유연하게 데이터 처리 가능!
🛠 6. 자바 표준 함수형 인터페이스
자바는 람다식을 쉽게 사용할 수 있도록 표준 함수형 인터페이스를 제공합니다.
📌 대표적인 함수형 인터페이스
인터페이스 | 추상 메소드 | 설명 |
Function<T, R> | apply(T t) | 입력값을 받아 변환하여 반환 |
Consumer<T> | accept(T t) | 입력값을 받아 처리 (반환값 없음) |
Supplier<T> | get() | 매개변수 없이 결과를 반환 |
Predicate<T> | test(T t) | 조건식을 검사하여 true 또는 false 반환 |
✅ 예제: Function 인터페이스 활용
Function<String, Integer> lengthFunction = s -> s.length();
System.out.println(lengthFunction.apply("Hello")); // 5
✅ 예제: Consumer 인터페이스 활용
Consumer<String> printConsumer = s -> System.out.println(s);
printConsumer.accept("Hello, World!"); // Hello, World!
✅ 예제: Predicate 인터페이스 활용
Predicate<Integer> isEven = num -> num % 2 == 0;
System.out.println(isEven.test(4)); // true
System.out.println(isEven.test(5)); // false
🏁 정리: 람다식의 개념과 활용
📌 람다식(Lambda Expression)은 자바 8부터 도입된 기능으로, 익명 함수를 표현하는 방법
📌 함수형 인터페이스(Functional Interface)에서만 사용 가능 (추상 메소드 1개 필요)
📌 람다식을 사용하면 코드가 간결해지고, 데이터 처리 방식이 유연해짐
📌 자바에서 표준 함수형 인터페이스를 제공하여 람다식 활용을 쉽게 지원
✍ 이 블로그 포스트를 통해 배운 점
- 람다식이 무엇이며, 왜 필요한지 이해했다.
- 기존 익명 구현 객체 방식과 비교하여 코드가 간결해지는 것을 확인했다.
- 자바의 표준 함수형 인터페이스를 활용하면 코드 재사용성이 높아진다는 점을 배웠다.
- 람다식을 사용하여 데이터 처리 방식을 함수로 전달할 수 있음을 학습했다.
참조:
이것이 자바다 _ 신용권
'Web Programming Language > JAVA' 카테고리의 다른 글
람다식(Lambda Expression) - 메소드 참조, 생성자 참조 (1) | 2025.03.05 |
---|---|
람다식(Lambda Expression) - 매개변수가 없는 람다식, 매개변수가 있는 람다식, 리턴값이 있는 람다식 (0) | 2025.03.05 |
MurmurHash3 (1) | 2025.02.17 |
BitSet 클래스 (0) | 2025.02.17 |
DTO와 VO (0) | 2025.02.12 |
댓글