람다식(Lambda Expression)이란 함수를 하나의 식(expression)으로 표현한 것이다. 함수를 람다식으로 표현하면 메소드의 이름이 필요 없기 때문에, 람다식은 익명 함수(Anonymous Function)의 한 종류라고 볼 수 있다.
현재 사용되고 있는 람다의 근간은 수학과 기초 컴퓨터과학 분야에서의 람다 대수이다. 람다 대수는 간단히 말하자면 수학에서 사용하는 함수를 보다 단순하게 표현하는 방법입니다.
// 기존의 방식
반환티입 메소드명 (매개변수, ...) {
실행문
}
// 예시
public String hello() {
return "Hello World!";
}
-------------------------------
//람다 방식
(매개변수, ... ) -> { 실행문 ... }
// 예시
() -> "Hello World!";
-------------------------------
장점
단점
파라미터 리스트
화살표
람다 바디
- 불리언 표현식
(List<String> list) -> list.isEmpty()
- 객체 생성
() -> new Apple(10)
- 객체에서 소비
(Apple a) -> {
System.out.println(a.getWeight());
}
- 객체에서 선택/추출
(String s) -> s.length()
- 두 값을 조합
(int a, int b) -> a * b
- 두 객체 비교
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())
//정상적인 유형
() -> {}
() -> 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
추가 학습 참고 및 출처
https://dev-kani.tistory.com/38
https://hbase.tistory.com/78
http://www.tcpschool.com/java/java_lambda_concept
https://mangkyu.tistory.com/113