[java] 자바 8의 람다식

개요

람다식은 자바 8부터 도입된 기능으로, 함수형 프로그래밍의 요소를 자바에 추가해주는 중요한 도구입니다. 이 기능은 코드의 간결함과 가독성을 향상시켜주고, 병렬 처리와 이벤트 기반 프로그래밍 등에 유용하게 사용됩니다. 이 글에서는 자바 8의 람다식에 대해 알아보겠습니다.

람다식의 구조

람다식은 간단한 구조를 가지고 있습니다. 다음은 람다식의 일반적인 형태입니다.

(parameter) -> expression

위의 코드에서 parameter는 람다식에 전달되는 인자를 나타내며, expression은 실행될 코드를 나타냅니다. 람다식을 사용할 때에는 메서드와 비슷한 형태로 작성되며, 메서드 이름과 리턴 타입이 없는 것이 특징입니다.

람다식의 예제

다음은 간단한 예제를 통해 람다식을 사용하는 방법을 알아보겠습니다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

// 람다식을 사용하지 않은 경우
for (int number : numbers) {
    System.out.println(number);
}

// 람다식을 사용한 경우
numbers.forEach((number) -> System.out.println(number));

위의 코드에서 numbers라는 리스트에 있는 숫자들을 출력하는 예제입니다. 첫 번째 방법은 일반적인 반복문을 사용하여 리스트의 요소를 하나씩 출력하는 방법이고, 두 번째 방법은 람다식을 사용하여 간단하게 요소를 출력하는 방법입니다.

함수형 인터페이스

람다식을 사용하기 위해서는 함수형 인터페이스(functional interface)를 사용해야 합니다. 함수형 인터페이스는 하나의 추상 메서드만을 가지고 있는 인터페이스를 말합니다. 자바 8에서는 java.util.function 패키지 안에 많은 함수형 인터페이스들이 이미 정의되어 있습니다. 이러한 함수형 인터페이스들을 사용하여 람다식을 정의하고 실행할 수 있습니다.

다음은 java.util.function.Predicate 인터페이스를 사용하는 예제입니다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

// 조건이 true인 요소만 필터링하여 출력하는 예제
numbers.stream()
    .filter((number) -> number % 2 == 0)
    .forEach(System.out::println);

위의 코드에서는 numbers 리스트에서 짝수인 요소들만 필터링하여 출력하는 예제입니다. filter 메서드에 람다식을 전달하여 원하는 조건을 정의할 수 있습니다.

결론

자바 8의 람다식은 자바에 함수형 프로그래밍을 도입함으로써 코드의 간결함과 가독성을 높여주는 중요한 기능입니다. 람다식을 사용할 때에는 함수형 인터페이스와 함께 사용하여 원하는 동작을 정의할 수 있습니다. 이를 통해 병렬 처리와 이벤트 기반 프로그래밍 등 다양한 상황에서 유용하게 활용할 수 있습니다.

참고 자료