From d866cc3d1b44d4d44db58c52fcc06b034c9736d8 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Wed, 26 Apr 2023 01:32:41 +0900 Subject: [PATCH] #36 rxjava: functional descriptor --- .../ex06/FunctionalDescriptorConsumer.java | 20 +++++++++++++ .../ex06/FunctionalDescriptorFunction.java | 26 +++++++++++++++++ .../ex06/FunctionalDescriptorPredicate.java | 28 +++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorConsumer.java create mode 100644 RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorFunction.java create mode 100644 RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorPredicate.java diff --git a/RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorConsumer.java b/RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorConsumer.java new file mode 100644 index 00000000..8c0fc1a7 --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorConsumer.java @@ -0,0 +1,20 @@ +package org.example.ex06; + +import java.util.Arrays; +import java.util.List; +import java.util.function.Consumer; + +/** + * 함수 디스크립터의 Consumer 예제 + */ +public class FunctionalDescriptorConsumer { + public static void main(String[] args) { + List numbers = Arrays.asList(1, 6, 10, 30, 65, 70, 102); + forEachPrint(numbers, n -> System.out.println(n)); + } + + public static void forEachPrint(List numbers, Consumer c) { + for(T number : numbers) + c.accept(number); + } +} \ No newline at end of file diff --git a/RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorFunction.java b/RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorFunction.java new file mode 100644 index 00000000..fef5459f --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorFunction.java @@ -0,0 +1,26 @@ +package org.example.ex06; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.Function; + +/** + * 함수 디스크립터의 Function 예제 + */ +public class FunctionalDescriptorFunction { + public static void main(String[] args) { + List characterList = Arrays.asList('a', 'b', 'c', 'd', 'e'); + List asciiNumbers = map(characterList, character -> (int) character); + + for(int asciiNumber : asciiNumbers) + System.out.println(asciiNumber); + } + + public static List map(List list, Function f){ + List result = new ArrayList<>(); + for(T t : list) + result.add(f.apply(t)); + return result; + } +} \ No newline at end of file diff --git a/RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorPredicate.java b/RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorPredicate.java new file mode 100644 index 00000000..06f85d77 --- /dev/null +++ b/RxJava/practice/src/main/java/org/example/ex06/FunctionalDescriptorPredicate.java @@ -0,0 +1,28 @@ +package org.example.ex06; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.Predicate; + +/** + * 함수 디스크립터의 Predicate 예제 + */ +public class FunctionalDescriptorPredicate { + public static void main(String[] args) { + List numbers = Arrays.asList(1, 6, 10, 30, 65, 70, 102); + List result = filter(numbers, n -> n > 30); + + for(int number : result) + System.out.println(number); + } + + private static List filter(List numbers, Predicate p){ + List result = new ArrayList<>(); + for(T number : numbers) + if(p.test(number)) + result.add(number); + + return result; + } +} \ No newline at end of file