[Java] 람다 표현식 (Lambda Expressions) #37

소개

자바(Java) 프로그래밍에서 람다 표현식은 함수형 프로그래밍의 핵심 요소 중 하나로 간결하고 효율적인 코드 작성을 가능하게 합니다. 이 글에서는 자바의 람다 표현식에 대해 자세히 알아보겠습니다.

[Java] 람다 표현식 (Lambda Expressions) #37

람다 표현식이란?

람다 표현식은 익명 함수를 간략하게 표현하는 방법으로, 함수형 인터페이스를 구현하는데 사용됩니다. 이는 자바 8에서 소개되었으며, 코드의 간결성과 가독성을 높이는 역할을 합니다.

기본 문법

람다 표현식의 기본 문법은 다음과 같습니다:

(parameter) -> expression

여기서 parameter는 메소드에 전달되는 매개변수를 나타내고, expression은 메소드가 수행하는 코드 블록입니다. 예를 들어, 두 수를 더하는 간단한 람다 표현식은 다음과 같습니다:

(int a, int b) -> a + b

함수형 인터페이스

람다 표현식은 함수형 인터페이스를 구현하는데 사용됩니다. 함수형 인터페이스는 하나의 추상 메소드만을 가지고 있으며, 람다 표현식은 이 추상 메소드를 구현합니다.

@FunctionalInterface
interface Calculator {
    int add(int a, int b);
}

위의 예제에서 Calculator는 함수형 인터페이스로, add라는 추상 메소드를 정의하고 있습니다. 람다 표현식을 이용하여 이 인터페이스를 구현할 수 있습니다.

Calculator addFunction = (a, b) -> a + b;
int result = addFunction.add(3, 5); // 결과: 8

람다 표현식의 활용

1. 컬렉션의 간결한 반복

람다 표현식을 사용하면 컬렉션을 간단하게 반복할 수 있습니다.

List<String> languages = Arrays.asList("Java", "Kotlin", "Scala");

// 기존 방식
for (String language : languages) {
    System.out.println(language);
}

// 람다 표현식
languages.forEach(language -> System.out.println(language));

2. 스레드와 병렬 프로그래밍

람다 표현식을 사용하면 스레드를 쉽게 다룰 수 있습니다.

// 기존 방식
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("Thread is running");
    }
}).start();

// 람다 표현식
new Thread(() -> System.out.println("Thread is running")).start();

3. 함수형 인터페이스 활용

자바의 다양한 함수형 인터페이스와 함께 람다 표현식을 사용하면 간편하게 코드를 작성할 수 있습니다.

@FunctionalInterface
interface Greeting {
    void greet(String message);
}

Greeting greeting = message -> System.out.println("Hello, " + message);
greeting.greet("World"); // 출력: Hello, World

람다 표현식 실제 사용 예시

파일 필터링

람다 표현식을 사용하여 특정 조건에 맞는 파일을 필터링할 수 있습니다.

File dir = new File("/path/to/directory");
File[] txtFiles = dir.listFiles(file -> file.isFile() && file.getName().endsWith(".txt"));

이벤트 핸들링

UI 프로그래밍에서 이벤트 핸들링에 람다 표현식을 활용할 수 있습니다.

button.addActionListener(event -> System.out.println("Button clicked"));

이처럼 람다 표현식은 다양한 상황에서 코드를 간결하게 만들어주며, 함수형 프로그래밍의 장점을 자바에 도입한 중요한 기능 중 하나입니다. 학습과 익숙해짐으로써 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 자바 프로그래머라면 람다 표현식에 대한 이해와 활용은 필수적입니다.

[Java] Java 디자인 패턴 (Design Patterns) #36
[Java] Java 디자인 패턴 (Design Patterns) #36
[Java] 스트림 API(Stream): 데이터 처리의 혁신적인 도구 #38
[Java] 스트림 API(Stream): 데이터 처리의 혁신적인 도구 #38

Leave a Comment