BE/Java

[Java] 람다식

baek-dev 2024. 12. 10. 18:36

람다식은 메서드를 하나의 식으로 표현할수 있게 해주며, 간결한 함수표현을 제공한다

 

람다식의 구성요소

  • 매개변수(parameters)
    • 메서드에 전달되는 입력값
    • 매개변수 타입은 생략 가능
  • 화살표 연산자 ->
    • 매개변수와 본문(실행코드)를 구분하는 역할
  • 본문(body)
    • 실행할 코드
    • 한줄일 경우 중뢀호{}생략 가능
(parameters) -> {body}
// 기존 방식: 익명 클래스 사용
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello, World!");
    }
};

// 람다식 방식
Runnable runnable = () -> System.out.println("Hello, World!");

예제

1. 매개변수 없는 람다식

() -> System.out.println("No parameters");

2. 매개변수 하나인 람다식

s -> System.out.println(s);

3. 매개변수 여러개인 람다식

(a, b) -> a + b;

4. 여러줄로 구성된 본문

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

 

람다식은 함수형 인터페이스와 함께 사용된다

함수형 인터페이스는 단 하나의 추상 메서드만 가지는 인터페이스


람다식은 스트림과 자주 사용된다

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> evenNumbers = numbers.stream()
                                   .filter(n -> n % 2 == 0)
                                   .collect(Collectors.toList());

System.out.println(evenNumbers); // [2, 4]

 

람다식의 제약

  • 람다식 내부에서는 변수 범위 제한
    • 람다식 안에서 사용하는 외부변수는 final이어야 함
  • 오직 함수형 인터페이스에서만 사용가능
    • 인터페이스는 반드시 단 하나의 추상메서드를 가져야함

 

 

 

 

출처 : ChatGPT

'BE > Java' 카테고리의 다른 글

[Java] 어노테이션  (2) 2024.12.11
[Java] JDBC와 JPA  (1) 2024.12.11
[Java] 스트림  (1) 2024.12.09
[Java] Map  (0) 2024.12.07
[Java] Optional  (0) 2024.12.06