개발/Java

[Java] 람다식

하빈H 2022. 9. 5. 22:39

람다식(Lambda Expression)이란?

함수를 하나의 식으로 표현한 것으로, 이름이 없는 익명함수(Anonymous Function)의 한 종류이다.

불필요한 코드를 줄이고 가독성을 높이기 위해 사용한다고 한다.

 

기존 구현 방식

매개변수 메소드명(파라미터, ...) {
    실행문
}

 

람다 방식

중괄호({}) 안에 함수의 코드를 작성하며, 한 문장인 경우 괄호 생략이 가능하다.

다만, 한 문장이어도 return문이 있으면 반드시 중괄호 안에 작성해야 한다.

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

 


람다식의 특징

람다식 내의 지역변수는 final로 선언하지 않아도 상수로 간주된다.

람다식으로 선언된 변수명은 다른 변수명과 중복될 수 없다.

멀티쓰레드를 활용하여 병렬 프로그래밍이 가능하다.

 

장점

코드가 간결해진다.

 

단점

반목문 등을 사용할 경우 성능이 떨어질 수 있다.

남용할 경우 코드 가독성이 떨어질 수 있다.


람다식 사용 예제

사칙연산을 람다식으로 구현해보면 아래와 같다.

 

>> 기존 구현 방식

package lamdaexpression;

public class ArithmeticTest{

    public static int add(int a, int b) {
        return a + b;
    }

    public static int sub(int a, int b) {
        return a - b;
    }

    public static int mul(int a, int b) {
        return a * b;
    }

    public static int div(int a, int b) {
        return a / b;
    }
}
package lamdaexpression;

public class MainClass {

    public static void main(String[] args) {

        System.out.println("1 + 2 =" + ArithmeticTest.add(1, 2));
        System.out.println("1 - 2 =" + ArithmeticTest.sub(1, 2));
        System.out.println("1 * 2 =" + ArithmeticTest.mul(1, 2));
        System.out.println("1 / 2 =" + ArithmeticTest.div(1, 2));
    }
}

 

>> 람다식

package lamdaexpression;

public interface Lamda {

    public int arithmeticTest(int a, int b);
}
package lamdaexpression;

public class MainClass {

    public static void main(String[] args) {

        Lamda add = (a, b) -> { return a + b; };
        Lamda sub = (a, b) -> { return a - b; };
        Lamda mul = (a, b) -> { return a * b; };
        Lamda div = (a, b) -> { return a / b; };
        System.out.println("1 + 2 =" + add.arithmeticTest(1, 2));
        System.out.println("1 - 2 =" + sub.arithmeticTest(1, 2));
        System.out.println("1 * 2 =" + mul.arithmeticTest(1, 2));
        System.out.println("1 / 2 =" + div.arithmeticTest(1, 2));
    }
}