기술 학습
JAVA 람다 표현식(Lambda Expressions) 개념과 활용
EpicArts
2025. 2. 15. 17:42
1. 람다 표현식이란?
람다 표현식(Lambda Expressions)은 Java 8에서 도입된 기능으로, 익명 함수를 보다 간결하게 작성할 수 있도록 도와줍니다. 코드의 가독성을 높이고 불필요한 반복을 줄이는 데 유용합니다.
람다 표현식의 주요 특징:
- 간결한 코드 작성: 불필요한 코드 줄 수를 줄여 가독성을 높임
- 함수형 프로그래밍 지원: Java에서 함수형 프로그래밍을 사용할 수 있도록 지원
- 컬렉션과 스트림 API와의 조합: 스트림 API에서 데이터 처리 시 유용함
📌 람다 표현식 기본 문법
(매개변수) -> { 실행 코드 }
- 매개변수가 하나이면 괄호 () 생략 가능
- 실행 코드가 한 줄이면 {} 중괄호 생략 가능
- return 문이 있으면 {} 생략 불가
2. 람다 표현식 기본 사용법
2.1 기존 방식 (익명 클래스 사용)
interface MyFunctionalInterface {
void sayHello();
}
public class LambdaExample {
public static void main(String[] args) {
MyFunctionalInterface instance = new MyFunctionalInterface() {
@Override
public void sayHello() {
System.out.println("Hello, Java!");
}
};
instance.sayHello();
}
}
2.2 람다 표현식 적용
public class LambdaExample {
public static void main(String[] args) {
MyFunctionalInterface instance = () -> System.out.println("Hello, Java!");
instance.sayHello();
}
}
✅ 익명 클래스를 람다 표현식으로 대체하여 코드가 훨씬 간결해짐
3. 람다 표현식과 함수형 인터페이스
람다 표현식을 사용하려면 반드시 함수형 인터페이스(@FunctionalInterface) 가 필요합니다.
3.1 함수형 인터페이스 정의
@FunctionalInterface
interface MyFunction {
int apply(int x, int y);
}
3.2 람다 표현식 사용
public class LambdaTest {
public static void main(String[] args) {
MyFunction add = (a, b) -> a + b;
MyFunction multiply = (a, b) -> a * b;
System.out.println("더하기: " + add.apply(5, 3));
System.out.println("곱하기: " + multiply.apply(5, 3));
}
}
✅ 함수형 인터페이스를 활용하여 람다식을 유연하게 적용 가능
4. 람다 표현식과 Java 내장 함수형 인터페이스
Java는 java.util.function 패키지에 여러 가지 내장 함수형 인터페이스를 제공합니다.
인터페이스설명메서드
Consumer<T> | 입력값을 받아 처리(리턴값 없음) | accept(T t) |
Supplier<T> | 입력값 없이 출력값 반환 | get() |
Function<T,R> | 입력값을 받아 변환 후 반환 | apply(T t) |
Predicate<T> | 입력값을 받아 참/거짓 반환 | test(T t) |
4.1 Consumer 사용 예제
import java.util.function.Consumer;
public class ConsumerExample {
public static void main(String[] args) {
Consumer<String> printMessage = message -> System.out.println("메시지: " + message);
printMessage.accept("Hello Lambda!");
}
}
4.2 Function 사용 예제
import java.util.function.Function;
public class FunctionExample {
public static void main(String[] args) {
Function<Integer, String> intToString = num -> "숫자: " + num;
System.out.println(intToString.apply(10));
}
}
5. 컬렉션과 람다 표현식 활용
람다 표현식은 컬렉션을 처리할 때 매우 유용합니다.
5.1 forEach 사용
import java.util.Arrays;
import java.util.List;
public class LambdaForEach {
public static void main(String[] args) {
List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
list.forEach(item -> System.out.println("과일: " + item));
}
}
5.2 filter 사용
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class LambdaFilter {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("A"))
.collect(Collectors.toList());
System.out.println(filteredNames);
}
}
6. 결론
이번 글에서는 Java의 람다 표현식 개념과 활용법을 살펴보았습니다. 람다 표현식을 사용하면 코드가 더 간결해지고 가독성이 높아집니다. 함수형 인터페이스와 함께 활용하면 더욱 효과적인 프로그래밍이 가능합니다.
다음 글에서는 자바의 함수형 프로그래밍(Functional Programming) 개념에 대해 다뤄보겠습니다!