Java 8의 Function은 1개의 인자(Type T)를 받고 1개의 객체(Type R)를 리턴하는 함수형 인터페이스입니다.
public interface Function<T, R> {
R apply(T t);
}
Example 1 : Function
다음 예제는 Function 구현 및 apply()
가 어떻게 동작하는지 알려줍니다.
apply()
에 Integer 객체를 인자를 전달하면 그 결과가 Integer 객체로 리턴됩니다.
import java.util.function.Function;
public class FunctionExample1 {
public static void main(String[] args) {
Function<Integer, Integer> func1 = x -> x * x;
Integer result = func1.apply(10);
System.out.println(result);
}
}
Output:
100
Example 2 : andThen()
다음 예제는 andThen()
이 어떻게 동작하는지 알려줍니다.
apply()
의 인자는 먼저 func1에 전달되며, func1의 결과가 func2의 인자로 전달됩니다. 그리고 func2의 결과가 리턴됩니다.
import java.util.function.Function;
public class FunctionExample2 {
public static void main(String[] args) {
Function<Integer, Integer> func1 = n -> n * n;
Function<Integer, String> func2 = n -> "result: " + n;
String result = func1.andThen(func2).apply(10);
System.out.println(result);
}
}
Output:
result: 100
Example 3 : compose()
다음 예제는 compose()
에 대해서 소개합니다.
multiply.compose(add)
는 add와 multiply 함수를 합성합니다.
addAndMultiply.apply(1)
는 1이 add 함수에 인자로 전달되며, 그 결과가 multiply 함수에 전달되며 결과가 리턴됩니다.
import java.util.function.Function;
public class FunctionExample3 {
public static void main(String[] args) {
Function<Integer, Double> add = n -> n + 2.0;
Function<Double, Double> multiply = n -> n * 5.0;
Function<Integer, Double> addAndMultiply = multiply.compose(add);
Double result = addAndMultiply.apply(1);
System.out.println(result);
}
}
Output:
15.0
참고
Loading script...
Related Posts
- Java - Stream을 배열로 변환
- Java 8 - Stream의 병렬처리(Parallel)
- Java Stream - findAny()와 findFirst()의 차이점
- Java 8 - BiConsumer 예제
- Java 8 - Consumer 예제
- Java 8 - BinaryOperator 예제
- Java 8 - BiPredicate 예제
- Java 8 - UnaryOperator 예제
- Java 8 - Predicate 예제
- Java 8 - Supplier 예제
- Java 8 - Stream을 List로 변환
- Java 8 - BiFunction 예제
- Java 8 - Function 예제
- Java8 - Interface의 Default Methods 이해하기
- Java8 - 함수형 인터페이스(Functional Interface) 이해하기
- Java8 - 메소드 레퍼런스(Method Reference) 이해하기
- Java8 - SummaryStatistics 예제 및 사용 방법 (count, min, max, average)
- Java8의 Stream Collect 사용 방법 및 예제
- Java8의 Stream reduction 사용 방법 및 예제
- Java8의 Stream find, match 사용 방법 및 예제
- Java8의 Optional 사용 방법 및 예제
- Java8의 Stream max, min 사용 방법 및 예제
- Java8의 Stream sorted 사용 방법 및 예제
- Java8의 Stream concat 사용 방법 및 예제
- Java8의 Stream distinct 사용 방법 및 예제
- Java8의 Stream limit과 skip 사용 방법 및 예제
- Java8 Stream의 filter와 map, flatMap 사용 방법 및 예제
- Java8의 Stream 생성 방법 및 예제