람다식(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));
}
}
'개발 > Java' 카테고리의 다른 글
[Java] Lombok이란? @Data, @NoArgsConstructor, @AllArgsConstructor, @Builder 사용하기 (0) | 2023.01.27 |
---|---|
[Java] 추상 클래스와 추상 메서드 (0) | 2022.09.01 |
[Java] String to Array, String to Char (0) | 2022.08.23 |
[Java] 배열과 메모리 (0) | 2022.08.22 |
[Java] 자료형 (0) | 2022.08.22 |