T.I.L #26 람다 표현식(Lambda Expressions)

개발자지망생·2023년 11월 7일
0

람다 표현식(Lambda Expressions)이란?

자바에서 람다 표현식(Lambda Expressions)은 Java8부터 도입된 기능으로, 간결한 방식으로 익명 함수를 표현할 수 있게 해준다. 람파 표현식은 주로 컬렉션을 조작하거나 스레드를 실행하는 등의 함수형 프로그래밍 작업에 유용하게 사용된다.

람다 표현식을 이해하기 위해서는 먼저 함수형 인터페이스(functional interface)의 개념을 알아야 한다. 함수형 인터페이스는 오직 하나의 추상 메서드를 가진 인터페이스이다. @FunctionalInterface 어노테이션을 사용하여 함수형 인터페이스임을 명시할 수 있지만, 이 어노테이션은 선택적이다.

람다 표현식의 기본 구조

람다 표현식은 아래와 같은 기본 구조를 가진다.

(매개변수) -> { 표현식; }

예를 들어, 두 정수를 더하는 간단한 람다 표현식은 다음과 같다.

(int a, int b) -> { return a + b; }

람다 표현식에서는 타입을 추론할 수 있는 경우 매개변수의 타입을 생략할 수 있다.

(a, b) -> { return a + b; }

만약 표현식이 한 줄이라면 중괄호와 return 키워드도 생략할 수 있다.

(a, b) -> a + b

람다 표현식의 장점

1. 코드의 간결성

불필요한 코드를 제거하여 간결한 표현이 가능해진다.

2. 코드의 가독성

인터페이스를 구현하는 데 필요한 부수적인 코드 없이 로직에 집중할 수 있다.

3. 지연 실행

람다 표현식은 필요한 순간까지 실행을 미룰 수 있어 효율성을 높일 수 있다.

4. 함수형 프로그래밍

불변성(immutability)과 사이드 이펙트(side effects)를 줄여 프로그램의 예측 가능성을 높인다.

람다 표현식의 예시

// 스레드 실행 예시
new Thread(() -> System.out.println("Hello from a thread")).start();

// 컬렉션 순회 예시
List<String> list = Arrays.asList("a", "b", "c", "d");
list.forEach(element -> System.out.println(element));

// 컬렉션 정렬 예시
Collections.sort(list, (String a, String b) -> a.compareTo(b));

람다 표현식과 함수형 인터페이스

람다 표현식은 함수형 인터페이스와 밀접한 관계가 있다. 자바는 java.util.function 패키지 안에 여러 가지 기본적인 함수형 인터페이스를 제공한다. 이 인터페이스들은 다양한 상황에서 사용할 수 있으며, 람다 표현식과 함께 사용된다.

  • Predicate< T > : 객체 T를 받아 boolean 값을 반환한다.
  • Consumer< T > : 객체 T를 받아서 소비하며, 반환값은 없다.
  • Function<T,R> : 객체 T를 받아서 객체 R을 반환한다.
  • Supplier< T > : 매개변수 없이 T 객체를 반환한다.

참고한 것 : 자바의 정석 , 구글 서칭

0개의 댓글