Day 19 : 람다식(Lamda Expressions)
- 람다식
: 익명 함수를 생성하기 위한 식
: 함수 지향 언어
: 자바 코드의 간결화
: 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과 쉽게 집계 가능
- 람다식 기본 문법
(매개변수) -> { 실행코드; };
(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[] {};