Java를 배워보자/7. 람다 표현식

자바 람다 표현식 기초

_Blue_Sky_ 2024. 9. 27. 08:46
728x90
728x90

자바 람다 표현식 기초: 상세 가이드

람다 표현식이란 무엇일까요?

자바 8에서 도입된 람다 표현식은 메서드를 하나의 식(expression)으로 간결하게 표현하는 방법입니다. 익명 함수라고도 불리며, 함수형 프로그래밍의 개념을 자바에 도입하여 코드를 더욱 간결하고 효율적으로 만들 수 있도록 돕습니다.

람다 표현식은 특히 함수형 인터페이스와 함께 사용될 때 그 진가를 발휘합니다. 함수형 인터페이스란 하나의 추상 메서드만을 가지는 인터페이스를 의미하며, 람다 표현식은 이 추상 메서드를 구현하는 코드를 간결하게 표현하는 데 사용됩니다.

왜 람다 표현식을 사용해야 할까요?

  • 코드 간결화: 익명 클래스를 사용하던 기존 방식보다 훨씬 간결하게 코드를 작성할 수 있습니다.
  • 함수형 프로그래밍: 자바에서도 함수형 프로그래밍 패러다임을 활용할 수 있도록 해줍니다.
  • 스트림 API와의 연동: 스트림 API를 사용하여 데이터를 처리할 때 람다 표현식을 활용하여 간결하고 효율적인 코드를 작성할 수 있습니다.
  • 병렬 처리: 람다 표현식은 병렬 처리를 위한 스트림 API와 자연스럽게 연동되어 병렬 처리를 쉽게 구현할 수 있도록 합니다.

람다 표현식의 기본 구조

(매개변수 목록) -> { 
    // 람다 표현식의 실행 코드
}
 
  • 매개변수 목록: 람다 표현수가 받는 매개변수를 정의합니다. 매개변수의 타입은 생략 가능하며, 하나의 매개변수일 경우 괄호도 생략할 수 있습니다.
  • ->: 람다 표현식의 시작을 알리는 기호입니다.
  • 실행 코드: 람다 표현식이 실행될 때 수행되는 코드 블록입니다.

간단한 예시

// 함수형 인터페이스
interface MyInterface {
    void method(String str);
}

// 람다 표현식 사용
MyInterface myInterface = (str) -> {
    System.out.println(str);
};
myInterface.method("Hello, lambda!");
 

위 예시에서 MyInterface는 하나의 추상 메서드 method를 가지는 함수형 인터페이스입니다. 람다 표현식은 method 메서드를 구현하며, 전달받은 문자열을 출력하는 역할을 합니다.

더 자세한 예시

List<String> list = Arrays.asList("apple", "banana", "orange");

// 람다 표현식을 이용한 리스트 요소 출력
list.forEach(s -> System.out.println(s));

// 람다 표현식을 이용한 리스트 요소 필터링
List<String> filteredList = list.stream()
                                .filter(s -> s.length() > 5)
                                .collect(Collectors.toList());
 
  • forEach 메서드는 리스트의 각 요소에 대해 람다 표현식을 실행합니다.
  • filter 메서드는 람다 표현식의 조건에 맞는 요소만 필터링합니다.

람다 표현식의 활용

  • 컬렉션 처리: forEach, map, filter, reduce 등의 메서드와 함께 사용하여 컬렉션을 효율적으로 처리할 수 있습니다.
  • 스레드 생성: Runnable 인터페이스를 이용하여 스레드를 생성할 때 람다 표현식을 사용할 수 있습니다.
  • 이벤트 처리: GUI 프로그래밍에서 이벤트 처리를 할 때 람다 표현식을 사용하여 코드를 간결하게 작성할 수 있습니다.

결론

람다 표현식은 자바 코드를 더욱 간결하고 효율적으로 만들 수 있는 강력한 기능입니다. 특히 스트림 API와 함께 사용하면 데이터 처리를 더욱 편리하게 할 수 있습니다. 람다 표현식의 기본 개념을 익히고 다양한 예제를 통해 연습해보면 자바 개발에 큰 도움이 될 것입니다.

참고:

  • 함수형 인터페이스
  • 스트림 API
  • 컬렉션 처리
  • 병렬 처리

 

  • 함수형 인터페이스: @FunctionalInterface 애노테이션을 사용하여 함수형 인터페이스임을 명시할 수 있습니다.
  • 람다 표현식의 타입 추론: 컴파일러는 람다 표현식의 타입을 컨텍스트에서 추론할 수 있습니다.
  • 메서드 참조: 기존 메서드를 참조하여 람다 표현식을 생성할 수 있습니다.

주의:

  • 모든 코드를 람다 표현식으로 작성하는 것은 좋지 않습니다. 가독성과 유지보수성을 고려하여 적절하게 사용해야 합니다.
  • 람다 표현식은 익명 클래스와 비슷한 개념이지만, 람다 표현식은 더 간결하고 함수형 프로그래밍에 적합합니다.
728x90
728x90