람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다.
람다라는 용어는 람다 미적분학 학계에서 개발한 시스템에서 유래했다. 람다 표현식에는 이름은 없지만 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다.
람다의 특징을 하나씩 살펴보자.
아래 기존 코드와 람다 표현식으로 구현한 메서드를 비교해보자.
// 기존 코드
Comparator<Product> byWeight = new Comparator<Product>() {
public int compare(Product p1, Product p2) {
return p1.getWeight().compareTo(p2.getWeight());
}
}
// 람다 표현식
Comparator<Product> byWeight =
(Product p1, Product p2) -> p1.getWeight().compareTo(p2.getWeight());
람다 표현식의 코드가 훨씬 간단해졌다. 이처럼 코드를 구축하는 과정에서 자질구레한 코드를 제거할 수 있고, 가독성 또한 높아진다.
위 람다 표현식을 설명하자면
(Product p1, Product p2) -> p1.getWeight().compareTo(p2.getWeight());
람다 파라미터 리스트, 화살표, 람다 바디 세 부분으로 이루어진다.