Java 8에서 도입된 람다 표현식(Lambda Expression)은 함수형 프로그래밍 스타일을 Java에 적용한 대표적인 기능입니다. 이를 통해 코드를 간결하게 작성하고, 복잡한 로직을 보다 효율적으로 표현할 수 있습니다. 이번 글에서는 람다 표현식과 함수형 프로그래밍의 심화 개념과 활용 사례를 다루어 보겠습니다.
1. 람다 표현식의 기본 개념
람다 표현식은 익명 함수(Anonymous Function)를 작성할 수 있는 간결한 방법입니다. 기존의 익명 클래스 사용 방식보다 간결하며, 함수형 인터페이스를 구현하는 데 주로 사용됩니다.
람다 표현식 문법:
(parameters) -> { body }
예제:
(int a, int b) -> a + b;
람다 표현식의 구성 요소:
{}
생략 가능합니다.2. 함수형 인터페이스
람다 표현식은 함수형 인터페이스를 구현하는 데 사용됩니다. 함수형 인터페이스는 하나의 추상 메서드만 가지는 인터페이스입니다.
예제:
@FunctionalInterface
interface Calculator {
int operate(int a, int b);
}
람다 표현식으로 구현:
Calculator add = (a, b) -> a + b;
System.out.println(add.operate(5, 3)); // 출력: 8
Java 내장 함수형 인터페이스: Java 8은 java.util.function
패키지에 다양한 함수형 인터페이스를 제공합니다.
Predicate<Integer> isEven = x -> x % 2 == 0;
System.out.println(isEven.test(4)); // true
Consumer<String> print = s -> System.out.println(s);
print.accept("Hello, World!");
Function<String, Integer> length = s -> s.length();
System.out.println(length.apply("Lambda")); // 6
Supplier<Double> randomValue = () -> Math.random();
System.out.println(randomValue.get());
3. 고급 람다 표현식 사용법
예:
Consumer<String> print = System.out::println;
print.accept("Hello, Method Reference!");
예:
Supplier<List<String>> listSupplier = ArrayList::new;
List<String> list = listSupplier.get();
예:
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
.filter(name -> name.startsWith("A"))
.forEach(System.out::println);
4. 함수형 프로그래밍과의 통합
람다 표현식은 함수형 프로그래밍의 핵심 개념을 Java에 도입한 것입니다. 함수형 프로그래밍은 데이터를 변경하지 않고 함수의 조합을 통해 결과를 도출하는 방식입니다.
예:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
List<Integer> squaredNumbers = numbers.stream()
.map(n -> n * n)
.collect(Collectors.toList());
System.out.println(squaredNumbers); // [1, 4, 9, 16]
예:
Function<Integer, Integer> square = x -> x * x;
Function<Integer, Integer> doubleIt = x -> x * 2;
Function<Integer, Integer> combined = square.andThen(doubleIt);
System.out.println(combined.apply(3)); // 18
5. 람다 표현식의 실용적 활용 사례
예:
button.addActionListener(e -> System.out.println("Button clicked!"));
예:
List<String> items = Arrays.asList("apple", "banana", "cherry");
items.stream()
.map(String::toUpperCase)
.forEach(System.out::println);
예:
new Thread(() -> System.out.println("Thread is running"));
6. 람다 표현식 사용 시 주의사항
결론
람다 표현식과 함수형 프로그래밍은 Java 개발자에게 더욱 간결하고 효율적인 코드를 작성할 수 있는 도구를 제공합니다. 함수형 인터페이스와 Stream API와의 결합을 통해 복잡한 데이터 처리와 비동기 작업도 손쉽게 구현할 수 있습니다. 람다 표현식의 장단점을 이해하고 적재적소에 활용하여 Java 애플리케이션의 생산성을 극대화해 보시길 바랍니다. 감사합니다.
오키나와 나하공항에 도착하거나 돌아가는 길, 바쁜 비행 일정에 쫓겨 허겁지겁 평범한 음식으로 끼니를 대충 때우신…
간사이 여행을 계획 중이신가요? 오사카, 교토, 고베를 아우르는 간사이 지역 여행에서 가장 중요한 필수품이 바로…
일본으로의 여행을 꿈꾸며 설레는 마음으로 출발을 준비할 때, 반드시 잊지 말아야 할 부분이 있습니다. 그것은…
일본여행의 준비 청소년 시기, 가장 많이 꿈꾸는 ‘해외여행’. 그 중에서도 한국에서 가깝고 볼거리·즐길거리도 다양해 많은…