람다란 무엇인가?

람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다.

람다라는 용어는 람다 미적분학 학계에서 개발한 시스템에서 유래했다. 람다 표현식에는 이름은 없지만 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다.

람다의 특징을 하나씩 살펴보자.

아래 기존 코드와 람다 표현식으로 구현한 메서드를 비교해보자.

// 기존 코드
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());

람다 파라미터 리스트, 화살표, 람다 바디 세 부분으로 이루어진다.