TIL#43

DuBu·2023년 8월 31일
0

일본IT JAVA 연수과정

목록 보기
61/61
post-thumbnail

Lambda

Java 8에서 도입된 람다 표현식은 간단하게 말해 익명 함수를 나타내는 방법입니다. 람다 표현식을 사용하면 코드를 간결하게 표현할 수 있고, 컬렉션 처리, 스레드 작업, 이벤트 핸들링 등 다양한 상황에서 유용하게 활용할 수 있습니다.

람다 표현식의 기본 구조는 다음과 같습니다:

(매개변수 목록) -> { 표현식 또는 코드 블록 }

예를 들어, 두 숫자를 더하는 간단한 람다 표현식을 살펴보겠습니다:

(int a, int b) -> a + b

이렇게 작성된 람다 표현식은 함수와 비슷한 역할을 하며, 매개변수로 전달된 값을 가지고 표현식을 계산하거나 코드 블록을 실행합니다.

람다 표현식은 주로 함수형 인터페이스와 함께 사용됩니다. 함수형 인터페이스란 단 하나의 추상 메서드를 가지는 인터페이스를 말합니다. 예를 들어, Runnable, Callable, Comparator 등이 함수형 인터페이스의 예입니다.

람다 표현식을 사용한 간단한 예제를 보겠습니다. 정렬을 위해 Comparator 인터페이스를 구현하는 경우:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
Collections.sort(names, (a, b) -> a.compareTo(b));

람다 표현식을 사용하면 익명 클래스를 생성하지 않고도 코드를 간결하게 작성할 수 있습니다. 이를 통해 가독성을 높이고 작업을 간편하게 수행할 수 있습니다.

Functional interface

함수형 인터페이스는 단 하나의 추상 메서드를 가지는 인터페이스를 말합니다. Java에서 함수형 프로그래밍을 지원하려면 이러한 함수형 인터페이스를 활용하여 람다 표현식이나 메서드 참조를 사용할 수 있습니다. Java 8에서는 @FunctionalInterface 어노테이션을 통해 함수형 인터페이스를 선언할 수 있습니다.

예시 코드를 통해 함수형 인터페이스를 이해해 보겠습니다. Runnable 인터페이스는 함수형 인터페이스의 예입니다. 이 인터페이스는 단 하나의 추상 메서드인 run()을 가지며, 스레드를 실행하는 데 사용됩니다.

public class FunctionalInterfaceExample {
    public static void main(String[] args) {
        // Runnable 함수형 인터페이스 사용
        Runnable runnable = () -> {
            for (int i = 0; i < 5; i++) {
                System.out.println("Count: " + i);
            }
        };
        
        // 스레드 실행
        Thread thread = new Thread(runnable);
        thread.start();
    }
}

위 예제에서 runnable은 람다 표현식을 사용하여 Runnable 인터페이스를 구현합니다. 이렇게 하면 run() 메서드의 내용을 정의할 수 있습니다.

또 다른 예시로, Comparator 인터페이스를 사용해보겠습니다. 이 인터페이스는 두 개의 객체를 비교하는 데 사용됩니다.

import java.util.*;

public class ComparatorExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
        
        // Comparator 함수형 인터페이스 사용
        Comparator<String> lengthComparator = (a, b) -> Integer.compare(a.length(), b.length());
        
        // 리스트 정렬
        Collections.sort(names, lengthComparator);
        
        System.out.println(names); // 출력: [Bob, Alice, Charlie]
    }
}

위 예제에서 lengthComparator는 람다 표현식을 사용하여 Comparator 인터페이스를 구현합니다. 이를 사용하여 문자열의 길이를 비교하고, Collections.sort()를 통해 리스트를 정렬합니다.

이렇듯 함수형 인터페이스를 사용하면 람다 표현식을 통해 간결하고 효율적인 코드를 작성할 수 있습니다.

0개의 댓글