Lamda
- 람다 함수는 익명함수이다.
- 그러므로 이름을 가질필요가 없다.
- 두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화 될 수 있다.(커링)
익명함수
- 일급객체이다. : 연산을 모두 지원하는 객체이다.
람다의 장단점
- 장점
- 코드의 간결성 : 람다를 사용하면 불필요한 반복문의 삭제가 가능하며 복잡한 식을 단순하게 표현할 수 있다.
- 지연연산 수행 : 람다는 지연연산을 수행 함으로써 불필요한 연산을 최소화 할 수 있다.
- 병렬처리 - 멀티쓰레드를 활용하여 병렬처리를 사용할 수 있다.
- 단점
- 람다식의 호출이 까다롭다.
- 람다 Stream사용 시 단순 for문 혹은 while문 사용 시 성능이 떨어진다.
- 불필요하게 너무 사용하게 되면 오히려 가독성을 떨어 뜨릴 수 있다.
람다표현식
람다는 매개변수 화살표(->) 함수몸체로 이용하여 사용할 수있다.
함수몸체가 단일 실행문이면 괄호를 생략할 수 있다.
함수몸체가 return문으로만 구성되어 있는 경우 괄호를 생략할 수 없다.
//정상적인 유형 () -> {} () -> 1 () -> { return 1; } (int x) -> x+1 (x) -> x+1 x -> x+1 (int x) -> { return x+1; } x -> { return x+1; } (int x, int y) -> x+y (x, y) -> x+y (x, y) -> { return x+y; } (String lam) -> lam.length() lam -> lam.length() (Thread lamT) -> { lamT.start(); } lamT -> { lamT.start(); }
//잘못된 유형 선언된 type과 선언되지 않은 type을 같이 사용 할 수 없다.
(x, int y) -> x+y
(x, final y) -> x+y