#36 rxjava: functional descriptor

This commit is contained in:
haerong22
2023-04-26 01:32:41 +09:00
parent 0389c9341c
commit d866cc3d1b
3 changed files with 74 additions and 0 deletions

View File

@@ -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<Integer> numbers = Arrays.asList(1, 6, 10, 30, 65, 70, 102);
forEachPrint(numbers, n -> System.out.println(n));
}
public static <T> void forEachPrint(List<T> numbers, Consumer<T> c) {
for(T number : numbers)
c.accept(number);
}
}

View File

@@ -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<Character> characterList = Arrays.asList('a', 'b', 'c', 'd', 'e');
List<Integer> asciiNumbers = map(characterList, character -> (int) character);
for(int asciiNumber : asciiNumbers)
System.out.println(asciiNumber);
}
public static <T, R> List<R> map(List<T> list, Function<T, R> f){
List<R> result = new ArrayList<>();
for(T t : list)
result.add(f.apply(t));
return result;
}
}

View File

@@ -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<Integer> numbers = Arrays.asList(1, 6, 10, 30, 65, 70, 102);
List<Integer> result = filter(numbers, n -> n > 30);
for(int number : result)
System.out.println(number);
}
private static <T> List<T> filter(List<T> numbers, Predicate<T> p){
List<T> result = new ArrayList<>();
for(T number : numbers)
if(p.test(number))
result.add(number);
return result;
}
}