자바에서 람다 살펴보기
8611 단어 javafunctionallambdasprogramming
람다 식이란 무엇입니까?
람다 식에 대해 생각하는 가장 간단한 방법은 어떤 클래스에도 반드시 속하지 않는 익명 또는 이름 없는 메서드라는 것입니다.
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}
람다 식은 본질적으로 간결해야 합니다. 이를 염두에 두고 위의 구조에 대한 몇 가지 고려 사항은 다음과 같습니다.
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에 대한 간략한 개요였습니다. 우리는 그것들이 기능적 인터페이스의 구현 방법과 사용 방법에 대해 논의했습니다. 작성하게 될 대부분의 람다 표현식은 아마도 내장 기능 인터페이스의 구현일 것이므로 이에 익숙해지는 것이 좋습니다.
Reference
이 문제에 관하여(자바에서 람다 살펴보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/salmanetamo/exploring-lambdas-in-java-2di8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)