Java Study

람다식 (Lambda Expression) 정리

초코너무조코 2025. 2. 4. 16:15
728x90

목차

    1. 람다식(Lambda Expression) 이란?

    람다식은 Java 8부터 도입된 기능으로, 익명 함수를 간결하게 표현할 수 있는 문법입니다. 기존의 익명 클래스보다 코드가 간결하고 가독성이 높아지는 장점이 있습니다.

    2. 람다식 기본 문법

    람다식의 기본적인 형태는 다음과 같습니다.

    (매개변수) -> { 실행문 }
    

    예제 1: 두 수의 합을 구하는 람다식

    (int a, int b) -> { return a + b; }
    

    개선 가능:

    • 매개변수의 타입을 생략할 수 있음
    • 실행문이 한 줄일 경우 {}와 return 키워드 생략 가능
    (a, b) -> a + b
    

    3. 람다식 사용 예제

    (1) Runnable 인터페이스 사용 예제

    기존 방식 (익명 클래스 사용)

    Runnable r = new Runnable() {
        @Override
        public void run() {
            System.out.println("Hello, world!");
        }
    };
    

    람다식 적용 후

    Runnable r = () -> System.out.println("Hello, world!");
    

    (2) Comparator 인터페이스 활용 예제

    기존 방식

    Comparator<Integer> comparator = new Comparator<Integer>() {
        @Override
        public int compare(Integer a, Integer b) {
            return a.compareTo(b);
        }
    };
    

    람다식 적용 후

    Comparator<Integer> comparator = (a, b) -> a.compareTo(b);
    

    4. 람다식과 함수형 인터페이스

    람다식은 함수형 인터페이스를 기반으로 동작합니다. 함수형 인터페이스는 단 하나의 추상 메서드만 가지는 인터페이스입니다. 대표적인 함수형 인터페이스는 다음과 같습니다.

    함수형 인터페이스 추상 메서드 설명

    Runnable void run() 매개변수 없고 반환값 없음
    Supplier<T> T get() 매개변수 없고 반환값 있음
    Consumer<T> void accept(T t) 매개변수 있고 반환값 없음
    Function<T, R> R apply(T t) 매개변수 있고 반환값 있음
    Predicate<T> boolean test(T t) 매개변수 있고 boolean 반환

    5. Stream API와 람다식 활용

    람다식은 Java의 Stream API와 함께 사용하면 더욱 강력한 기능을 발휘합니다.

    (1) 리스트에서 짝수만 필터링하는 예제

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
    numbers.stream()
           .filter(n -> n % 2 == 0)
           .forEach(System.out::println);
    

    (2) 문자열 리스트를 대문자로 변환

    List<String> names = Arrays.asList("java", "lambda", "expression");
    names.stream()
         .map(String::toUpperCase)
         .forEach(System.out::println);
    

    6. 정리 및 결론

    • 람다식은 익명 함수를 간결하게 표현할 수 있는 Java 8 기능
    • 함수형 인터페이스를 기반으로 동작
    • 컬렉션, 스트림 API와 함께 사용하면 더욱 강력함
    • 코드가 간결해지고 가독성이 높아짐
    728x90