Java/14. 람다식 (Lambda Expressions)

Day 19 : 람다식(Lamda Expressions)

pancakemaker 2021. 11. 12. 11:14

- 람다식

: 익명 함수를 생성하기 위한 식

: 함수 지향 언어

: 자바 코드의 간결화

: 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과 쉽게 집계 가능

 

- 람다식 기본 문법

(매개변수) -> { 실행코드; };

(int a) -> { System.out.println(a); };

매개변수 타입은 런타임 시에 대입되는 값에 따라 자동으로 인식되므로 매개 변수 타입을 일반적으로 언급하지 않는다.

(a) -> { System.out.println(a); };

하나의 매개 변수만 있다면 괄호 ( )를 생략할 수 있고, 하나의 실행문만 있다면 중괄호 { }를 생략할 수 있다.

a -> System.out.println(a);

매개 변수가 없을 경우 빈 괄호 ( )를 반드시 사용해야 한다.

( ) -> { ...; };

결과값을 리턴해야 한다면 return문을 쓸 수 있다.

(x, y) -> { result x + y; };

중괄호 { }에 return문만 있을 경우, 중괄호 { }와 return을 생략할 수 있다.

x, y -> x + y;

 

- 람다식으로의 변환 예제

1.

int max(int a, int b) {

   return a > b ? a : b;

}

 

람다식)

(a, b) -> { return a > b ?  a : b; };

(a, b) -> a > b ? a : b;

 

2. 

int printVar(String name, int i) {

   System.out.println(name + "=" + i);

}

 

람다식)

(name, i) -> { System.out.println(name + "=" + i); };

(name, i) -> System.out.println(name + "=" + i);

 

3.

int square(int x) {

   return x * x;

}

 

람다식)

x -> x * x;

 

4.

int roll() {

   return (int) (Math.random() * 6);

}

 

람다식)

( ) -> { return (int) (Math.random() * 6); };

( ) -> (int) (Math.random() * 6;

 

5.

int sunArr(int[] arr) {

   int sum = 0;

   for(int i : arr)

      sum += i;

   return sum;

}

 

람다식)

(int[] arr) -> {

   int sum = 0;

   for(int i : arr) { 

      sum += i;

   }

   return sum; 

};

 

6.

int[] emptyArr() {

   return new int[] {};

}

 

람다식)

( ) -> { return new int[] {}; };

( ) -> new int[] {};