1. 람다식이란?
람다식은 자바 8에서 도입된 기능으로, 함수형 프로그래밍을 지원하기 위한 표현식이다. 간단히 말해, 람다식은 메서드를 하나의 식으로 표현한 것이다.
람다식의 기본 개념은 다음과 같다:
- 익명 함수의 한 형태이다.
- 메서드를 하나의 식으로 표현한다.
- 객체 지향 언어보다는 함수 지향 언어에 가까운 문법이다.
- 컬렉션의 요소를 필터링하거나 매핑하는 등의 작업에 유용하다.
2. 람다식의 기본 문법과 사용법
람다식의 기본 문법은 다음과 같다.
(매개변수) -> { 실행문 }
1. 메서드의 이름과 반환타입을 제거하고 ->를 {} 블록 앞에 추가한다.
// 기본 메서드
public void printHello() {
System.out.println("Hello");
}
// 람다식
() -> { System.out.println("Hello"); }
2. 반환값이 있는 경우 식이나 값만 적고 리턴문 생략가능 (세미콜론 안 붙임)
// 기본 메서드
public int sum(int a, int b) {
return a + b;
}
// 람다식
(a, b) -> a + b
3. 매개변수의 타입이 추론가능하면 생략
// 기본 메서드
public boolean isPositive(int number) {
return number > 0;
}
// 람다식
number -> number > 0
예시를 통해 람다식의 사용 방법을 알아보자
- 기존의 익명 클래스를 활용한 방식
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Hello, Lambda!");
}
};
- 람다식을 활용한 방식
Runnable runnable = () -> System.out.println("Hello, Lambda!");
위 예시에서 볼 수 있듯이, 람다식을 사용하면 코드가 훨씬 간결해진다.
3. 람다식의 활용 사례와 장점
- 컬렉션 처리 : Stream API와 함께 사용하여 컬렉션의 요소를 쉽게 필터링, 매핑, 정렬할 수 있다.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
.filter(name -> name.startsWith("A"))
.forEach(System.out::println);
- 이벤트 리스너 구현 : GUI 프로그래밍에서 이벤트 리스너를 간단하게 구현할 수 있다.
button.addActionListener(e -> System.out.println("Button clicked!"));
4. 람다식의 장점
- 코드의 간결성: 불필요한 코드를 줄여 가독성을 높인다.
- 유연성: 메서드를 변수처럼 다룰 수 있어 코드의 유연성이 증가한다.
- 병렬 처리 용이: 멀티코어 CPU에서 병렬 처리를 쉽게 구현할 수 있다.