자바에서 람다 살펴보기

이것은 Java의 Lambdas에 대한 빠른 소개입니다. 이 자습서를 이해하려면 Java로 코드를 작성하는 기본 사항을 잘 알고 있어야 합니다. 따라하고 일부 코드를 시도하려면 선호하는 IDE를 사용할 수 있습니다. 저는 개인적으로 IntelliJ를 사용합니다.

람다 식이란 무엇입니까?



람다 식에 대해 생각하는 가장 간단한 방법은 어떤 클래스에도 반드시 속하지 않는 익명 또는 이름 없는 메서드라는 것입니다.
Lambda는 Java 8에서 도입되었으며 함수형 프로그래밍을 사용하여 Java에서 보다 정확하고 강력한 코드를 작성하는 방법을 제공합니다.

람다를 사용하기 전에 기능적 인터페이스에 대해 배워야 합니다. 이는 람다 표현식이 기능적 인터페이스의 구현이기 때문입니다.
기능적 인터페이스는 하나의 추상 메서드만 있는 인터페이스입니다.

@FunctionalInterface
public interface CanSwim {
    void swim();
}


인터페이스에 추가된 @FunctionalInterface 주석에 유의하십시오. 이는 기능적 인터페이스의 정의에 필요하지 않지만 다른 추상 메서드가 인터페이스에 추가되지 않도록 보장합니다.

java.util.function 패키지에서 탐색할 수 있는 기존 기능 인터페이스가 많이 있습니다. 기능적 인터페이스를 사용하는 대부분의 사용 사례를 다루므로 직접 만들 필요가 없을 수도 있습니다.

이제 람다로 돌아갑니다. 기능 인터페이스와 관련되는 방식은 기능 인터페이스의 단일 추상 메서드 구현이라는 것입니다. 이전 예제를 기반으로 한 모양은 다음과 같습니다.

CanSwim fish = () -> System.out.println("I'm a fish and I'm swimming!");
fish.swim(); // Prints "I'm a fish and I'm swimming!"


람다식을 어떻게 만들고 사용합니까?



람다 식의 일반적인 구조는 다음과 같습니다.

(parameter list) -> {lambda body}


람다 식은 본질적으로 간결해야 합니다. 이를 염두에 두고 위의 구조에 대한 몇 가지 고려 사항은 다음과 같습니다.
  • 매개변수 목록: 이 목록에는 0, 1개 이상의 매개변수가 있을 수 있습니다. 단일 매개변수가 있고 컨텍스트에서 변수 유형을 유추할 수 있는 경우를 제외하고 괄호는 필수입니다.
  • 화살표: 화살표는 화살표 연산자 또는 람다 연산자라고 하며 항상 필요합니다
  • .
  • 람다 본문: 작업을 단일 식으로 평가할 수 있는 경우 람다 본문 주위의 중괄호는 선택 사항입니다. 보다 복잡한 작업(변수 선언, 루프 사용, if 문 사용 등)에는 중괄호가 필요합니다. 키워드return는 중괄호가 사용되고 반환 값이 예상되는 경우에만 람다 본문에 필요합니다.

  • 다음은 java.util.function 패키지의 일부 인터페이스를 사용하는 몇 가지 예입니다.

    // Takes a single integer and has a void return type
    IntConsumer printInteger = x -> System.out.println(x);
    printInteger.accept(4); // Prints "4"
    
    // Takes 2 integers and returns a string
    BiFunction<Integer, Integer, String> joinNumbers = (number1, number2) -> number1 + ", " + number2;
    System.out.println(joinNumbers.apply(3, 4));; // Prints "3, 4"
    
    // Takes two Strings and returns a string
    BinaryOperator<String> concatenateWords = (String word1, String word2) -> word1 + " " + word2 + "!";
    System.out.println(concatenateWords.apply("Hello", "World")); // Prints "Hello World!"
    
    // Takes an integer and returns a string
    Function<Integer, String> getFizzBuzzText = number -> {
        if (((number % 5) == 0) && ((number % 7) == 0))
            return "fizzbuzz";
        else if ((number % 5) == 0)
            return "fizz";
        else if ((number % 7) == 0)
            return "buzz";
        else
            return "" + number;
    };
    System.out.println(getFizzBuzzText.apply(35));  // Prints "fizzbuzz"
    


    람다 식에 관심을 가져야 하는 이유는 무엇입니까?



    람다 식의 힘은 메서드 매개 변수와 같은 방식으로 함수를 전달할 수 있다는 사실에 있습니다. 따라서 함수 또는 코드를 "데이터"로 취급할 수 있는 함수형 스타일 프로그래밍을 위한 훌륭한 인에이블러입니다.

    람다는 컬렉션에 대한 복잡한 작업을 수행할 수 있도록 Java 8에 도입된 기능과 결합될 때 더욱 강력해집니다.

    이것은 Java의 Lambdas에 대한 간략한 개요였습니다. 우리는 그것들이 기능적 인터페이스의 구현 방법과 사용 방법에 대해 논의했습니다. 작성하게 될 대부분의 람다 표현식은 아마도 내장 기능 인터페이스의 구현일 것이므로 이에 익숙해지는 것이 좋습니다.

    좋은 웹페이지 즐겨찾기