소개
자바(Java) 프로그래밍에서 람다 표현식은 함수형 프로그래밍의 핵심 요소 중 하나로 간결하고 효율적인 코드 작성을 가능하게 합니다. 이 글에서는 자바의 람다 표현식에 대해 자세히 알아보겠습니다.
람다 표현식이란?
람다 표현식은 익명 함수를 간략하게 표현하는 방법으로, 함수형 인터페이스를 구현하는데 사용됩니다. 이는 자바 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"));
이처럼 람다 표현식은 다양한 상황에서 코드를 간결하게 만들어주며, 함수형 프로그래밍의 장점을 자바에 도입한 중요한 기능 중 하나입니다. 학습과 익숙해짐으로써 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 자바 프로그래머라면 람다 표현식에 대한 이해와 활용은 필수적입니다.