Dev

[JAVA] 람다식이란?

마라탕천재 ㅣ 2024. 9. 2. 10:56

1. 람다식이란?

람다식은 자바 8에서 도입된 기능으로, 함수형 프로그래밍을 지원하기 위한 표현식이다. 간단히 말해, 람다식은 메서드를 하나의 식으로 표현한 것이다.

람다식의 기본 개념은 다음과 같다:

  • 익명 함수의 한 형태이다.
  • 메서드를 하나의 식으로 표현한다.
  • 객체 지향 언어보다는 함수 지향 언어에 가까운 문법이다.
  • 컬렉션의 요소를 필터링하거나 매핑하는 등의 작업에 유용하다.

 

 

2. 람다식의 기본 문법과 사용법

람다식의 기본 문법은 다음과 같다.

(매개변수) -> { 실행문 }

 

1. 메서드의 이름과 반환타입을 제거하고 ->를 {} 블록 앞에 추가한다.

// 기본 메서드
public void printHello() {
    System.out.println("Hello");
}

// 람다식
() -> { System.out.println("Hello"); }

 

2. 반환값이 있는 경우 식이나 값만 적고 리턴문 생략가능 (세미콜론 안 붙임)

// 기본 메서드
public int sum(int a, int b) {
    return a + b;
}

// 람다식
(a, b) -> a + b

 

3. 매개변수의 타입이 추론가능하면 생략

// 기본 메서드
public boolean isPositive(int number) {
    return number > 0;
}

// 람다식
number -> number > 0

 

예시를 통해 람다식의 사용 방법을 알아보자

  • 기존의 익명 클래스를 활용한 방식
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello, Lambda!");
    }
};
  • 람다식을 활용한 방식
Runnable runnable = () -> System.out.println("Hello, Lambda!");

위 예시에서 볼 수 있듯이, 람다식을 사용하면 코드가 훨씬 간결해진다.

 

 

3. 람다식의 활용 사례와 장점

  • 컬렉션 처리 : Stream API와 함께 사용하여 컬렉션의 요소를 쉽게 필터링, 매핑, 정렬할 수 있다.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
     .filter(name -> name.startsWith("A"))
     .forEach(System.out::println);
  • 이벤트 리스너 구현 : GUI 프로그래밍에서 이벤트 리스너를 간단하게 구현할 수 있다.
button.addActionListener(e -> System.out.println("Button clicked!"));

 

 

4. 람다식의 장점

 

  • 코드의 간결성: 불필요한 코드를 줄여 가독성을 높인다.
  • 유연성: 메서드를 변수처럼 다룰 수 있어 코드의 유연성이 증가한다.
  • 병렬 처리 용이: 멀티코어 CPU에서 병렬 처리를 쉽게 구현할 수 있다.