Programming/Java

자바의 람다식

vita12321 2023. 8. 5. 15:46
728x90
반응형

자바의 람다식(Lambda Expression) 프로그래밍에서 함수형 인터페이스를 자주 사용하여 코드를 간결하게 만들 있는 기능입니다. 글에서는 자바의 람다식에 대한 개념, 기본 사용 방법 향상된 함수형 프로그래밍을 위한 API 사용법을 보다 상세하게 소개하겠습니다.


 

1. 람다식의 출현 배경

자바의 람다식은 자바 8부터 도입되었습니다. 이전의 자바 버전에서는 익명 클래스를 사용하여 메서드를 정의하곤 했습니다. 하지만, 그럴 때마다 구현할 인터페이스나 클래스, 메서드 이름 등을 명시해야 했습니다. 이로 인해 코드가 복잡해지고 읽기 어렵게 되는 문제가 있었습니다. 람다식은 이러한 문제를 해결하고자 도입되었으며, 코드를 간결하게 만들면서 가독성을 향상시킵니다.


 

2. 람다식의 특징

  • 간결한 표현
    람다식을 사용하면 길고 장황한 익명 클래스 정의를 간단하게 표현할 수 있습니다.

  • 효율성
    람다식은 메서드를 참조하는 메서드 핸들(method handle)을 자동으로 만들어주므로, 익명 클래스보다 메모리 사용이 효율적입니다.

  • 지연 실행(Lazy evaluation)
    람다식은 실제로 호출되는 시점에만 실행되므로, 불필요한 연산을 줄여 성능을 최적화할 수 있습니다.

 

3. 람다 표현식의 활용

람다식은 다양한 자바 API 함께 사용됩니다. 대표적으로 Collections API Stream API에서 활용되며, 이를 통해 데이터를 간결하게 처리하고 변환할 있습니다.


 

4. 자바 람다식의 개념 기본 사용 방법

람다식은 익명 함수(Anonymous Function) 불리며, 메서드의 이름과 반환 타입이 없는 간단한 코드 구조로 구성되어 있습니다. 람다식은 함수형 인터페이스(Functional Interface) 구현을 위해 주로 사용됩니다. 함수형 인터페이스란 메서드를 가지는 인터페이스이지만, 하나의 추상 메서드만 갖고 있는 인터페이스를 말합니다.

 

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

(parameters) -> { body }

 

예를 들어, 정수를 더하는 람다식은 다음과 같이 구현할 있습니다.

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

 

또는 다음과 같이 간결하게 표현 가능합니다.

(a, b) -> a + b


5. 자바의
람다식 사용 예제

자바 람다식의 강력함은 함수형 인터페이스의 구현을 간편화하고, 코드의 가독성을 높여줍니다. 이제, 자바의 람다식을 사용하여 여러 구현 예제를 살펴보겠습니다.

 

1) Runnable 인터페이스 구현

람다를 사용하지 않고 Runnable 인터페이스를 구현하려면 다음과 같이 작성합니다.

import java.util.*;

public class Main {

    public static void main(String[] args) {

        new Thread(new Runnable() {

            @Override

            public void run() {

                System.out.println("Hello, Java!");

            }

        }).start();

    }

}

 

이제 람다식으로 동일한 코드를 작성해보겠습니다.

import java.util.*;

public class Main {

    public static void main(String[] args) {

        new Thread(() -> System.out.println("Hello, Lambda!")).start();

    }

}

 

2) Comparator 인터페이스 구현

Comparator 인터페이스를 이용해서 람다식을 사용하는 예제를 살펴보겠습니다.

import java.util.*;

public class Main {

    public static void main(String[] args) {

        List<String> tasks = Arrays.asList("Study", "Workout", "Cook");

 

        Collections.sort(tasks, new Comparator<String>() {

            @Override

            public int compare(String s1, String s2) {

                return s1.length() - s2.length();

            }

        });

 

        System.out.println(tasks); // 출력: [Study, Cook, Workout]

    }

}

 

람다식으로 변경하면 다음과 같습니다.

import java.util.*;

public class Main {

    public static void main(String[] args) {

        List<String> tasks = Arrays.asList("Study", "Workout", "Cook");

 

        Collections.sort(tasks, (s1, s2) -> s1.length() - s2.length());

 

        System.out.println(tasks); // 출력: [Study, Cook, Workout]

    }

}


6. 자바의
함수형 프로그래밍을 향상시키는 API

자바 8부터는 람다식을 쉽게 사용할 있도록 일반적인 작업에 사용되는 많은 함수형 인터페이스가 제공됩니다. 이들 인터페이스는 java.util.function 패키지에 포함되어 있으며 Predicate, Function, Consumer, Supplier 등등의 많은 인터페이스가 제공됩니다. 또한, Stream API 사용하여 복잡한 데이터 가공 작업을 간편하게 처리할 있습니다.

 

 

자바의 람다식을 이용하면 코드를 간결하고 효율적으로 작성할 있으며, 함수형 인터페이스 Stream API 같은 라이브러리를 통해 응용 프로그램의 성능을 최적화할 있습니다. 이를 통해 유연한 프로그램 설계와 효율적인 코드 작성이 가능해집니다.

728x90
반응형