Java 람다식(Lambda Expression): 정의, 용도, 사용 방법 및 예시
1. 람다식(Lambda Expression)의 정의
람다식은 익명 함수(Anonymous Function)를 생성하기 위한 표현식이다. 이는 메소드의 구현을 단순하고 간결하게 작성할 수 있도록 도와준다. Java 8부터 도입된 람다식은 함수형 프로그래밍 스타일을 지원하며, 코드의 가독성과 유지보수성을 향상시킨다.
2. 람다식의 용도
- 간결한 코드: 불필요한 코드(익명 클래스 등)를 줄이고, 간결하게 표현할 수 있다.
- 함수형 인터페이스: 람다식은 함수형 인터페이스(Single Abstract Method Interface)를 구현할 때 유용하다.
- 스트림 API: Java 스트림 API와 함께 사용하여 컬렉션 데이터의 필터링, 매핑, 집계 등을 간편하게 처리할 수 있다.
3. 람다식의 사용 방법
람다식의 기본 형태는 (parameters) -> expression 또는 (parameters) -> { statements; }이다.
- 매개변수가 하나인 경우: parameter -> expression
- 매개변수가 여러 개인 경우: (parameter1, parameter2) -> expression
- 코드 블록이 포함된 경우: (parameters) -> { statements; }
4. 람다식 예시
람다식을 사용하여 다양한 상황에서 코드의 간결성을 살펴보자.
4.1. Runnable 인터페이스 구현
익명 클래스를 사용한 Runnable 인터페이스 구현:
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Hello, world!");
}
};
람다식을 사용한 Runnable 인터페이스 구현:
Runnable runnable = () -> System.out.println("Hello, world!");
4.2. Comparator 인터페이스 구현
익명 클래스를 사용한 Comparator 인터페이스 구현:
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
};
람다식을 사용한 Comparator 인터페이스 구현:
Comparator<String> comparator = (s1, s2) -> s1.compareTo(s2);
4.3. 스트림 API와 람다식
스트림 API와 람다식을 사용하여 리스트의 요소를 필터링하고, 매핑하고, 집계하는 예시:
List<String> names = Arrays.asList("John", "Jane", "Tom", "Alice");
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("J"))
.collect(Collectors.toList());
filteredNames.forEach(System.out::println);
위 예시에서 filter(name -> name.startsWith("J")) 부분이 람다식을 사용한 코드야. 이는 리스트의 각 요소가 "J"로 시작하는지 필터링하는 역할을 한다.