백/Java

[Java] 자바(Java)의 람다식(Lambda)란?

연지양갱 2023. 10. 26. 20:57
728x90
반응형
SMALL

출처 : https://namu.wiki/w/%EB%9E%8C%EB%8B%A4

💡 Lambda란?

자바의 람다 표현식(Lambda Expression)은 Java 8부터 도입된 기능으로, 간단하게 메소드를 정의하고 전달 할 수 있는 방법입니다.

람다 표현식은 주로 함수형 인터페이스(Functional Interface)의 인스턴스를 생성할 떄 사용됩니다.

함수형 인터페이스는 메소드가 하나만 정의된 인터페이스를 의미합니다.

불필요한 코드를 줄이고 가독성을 향상시키는 것을 목적으로 두고 있습니다.

 

 

📌 Lambda의 특징

1. 익명성

람다식은 이름이 없는 함수입니다. 따라서 일회용 함수를 만드는 데 유용합니다.

 

2. 함수형 인터페이스

람다식은 함수형 인터페이스에 사용됩니다. 

함수형 인터페이스는 하나의 추상메소드를 가진 인터페이스를 말합니다.

 

3. 표현의 간결성

람다식을 사용하면, 코드의 양을 줄이고 가독성을 높일 수 있습니다.

 

 

📌람다식의 장단점

장점

1. 간결성 : 람다식은 메소드를 간결하게 표현할 수 있습니다. 이로 인해 코드의 양이 줄고 가독성이 향상됩니다.

2. 함수형 프로그래밍 : 람다식을 통해 함수형 프로그래밍을 활용할 수 있습니다. 함수형 프로그래밍은 불변성과 부작용 없음을 지향하므로, 병렬 처리 등에서 이점이 있습니다.

3. 지연 연산 수행 : 람다식은 필요할 때만 연산을 수행하는 지연 연산(Lazy Evaluation)을 가능하게 합니다. 이로 인해 성능을 향상시킬 수 있습니다.

 

단점

1. 람다를 사용하지 않는 사람들에게 낯설 수 있음 : 람다식은 익숙하기 않은 사람들에게는 코드 해석이 어렵게 느껴질 수 있습니다.

2. 디버깅 어려움 : 람다식은 익명 함수이므로, 디버깅하는 데 어려움이 있을 수 있습니다.

3. 재사용성 제한 : 람다식은 일반적으로 한번만 사용되므로, 재사용성이 제한적입니다.

 

 

 

🖊️사용 문법

(parameters) -> expression

또는

(parameters) -> { statements; }

이런 식으로 표현 할 수 있습니다.

(a, b) -> a + b

두개의 정수를 인자로 받고, 두 정수의 합을 결과로 반환합니다.

 

🍀 함수형 인터페이스(Functional Interface)

@FunctionalInterface

Functional Interface는 일반적으로 '구현해야 할 추상 메소드가 하나만 정의된 인터페이스'를 가리킵니다.

// 메인 클래스
public class Main {
    // 함수형 인터페이스 정의
    @FunctionalInterface
    public interface MyFunction {
        int apply(int a, int b);
    }
    
    public static void main(String[] args) {
        // 람다 표현식을 사용하여 함수형 인터페이스의 인스턴스 생성
        MyFunction add = (a, b) -> a + b;
        MyFunction multiply = (a, b) -> a * b;

        // 함수형 인터페이스를 사용
        System.out.println(add.apply(5, 3)); // 출력: 8
        System.out.println(multiply.apply(5, 3)); // 출력: 15
    }
}

 

인터페이스를 생성하고 main에 인스턴스를 생성합니다

생성할 때 ( ) -> 을 활용합니다.

 

위 코드에서 MyFunction은 하나의 추상 메소드 apply를 가진 함수형 인터페이스입니다.

add와 multiply는 이 함수형 인터페이스의 인스턴스로, 람다 표현식을 사용하여 각각 덧셈과 곱셈 연산을 정의하고 있습니다.

add.apply(5, 3) 과 multiply.apply(5,3)은 각각 덧셈과 곱셈 연산을 수행하고 그 결과를 출력합니다.

반응형