카테고리 없음
자바의 정석 java.util.function 패키지
구슬탈출
2023. 7. 31. 23:18
자주 사용되는 다양한 함수형 인터페이스를 제공
Predicate<Strig> isEmptyStr = s -> s.length() == 0;
String s = "";
if(isEmptyStr.test(s)) // if(s.length() == 0);
System.out.println("This is an empty String");
문제. 아래의 빈 칸에 알맞은 함수형 인터페이스(java.util.function패키지)를 적으시오
- 정답
- Supplier<Integer>
- Consumer<Integer>
- Predicate<Integer>
- Function<Integer,Integer>
(2/3)
매게변수가 2개인 함수형 인터페이스
@FunctionalIntereface
interface TriFunction<T,U,V,R> {
R apply(T t, U u , V v);
}
(3/3)
- 매게변수의 타입과 반환타입이 일치하는 함수형 인터페이스
package test;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class Main {
public static void main(String[] args) {
Supplier<Integer> s= () -> (int)(Math.random() * 100) + 1;
Consumer<Integer> c = i -> System.out.print(i+", ");
Predicate<Integer> p = i -> i %2 == 0;
Function<Integer, Integer> f = i -> i /10 * 10;
List<Integer> list = new ArrayList<>();
makeRandomList(s,list); // list를 렌덤값으로 채운다.
System.out.println(list);
printEvenNum(p,c,list); // 짝수를 출력
List<Integer> newList = doSomething(f,list);
System.out.println(newList);
}
static <T> List<T> doSomething(Function<T, T> f , List<T> list) {
List<T> newList = new ArrayList<T>(list.size());
for (T i : list ) {
newList.add(f.apply(i));
}
return newList;
}
// Cousumer<Integer> c = i -> System.out.print(i+", ")
// Predicate<Integer> p = i -> i %2 == 0;
static <T> void printEvenNum(Predicate<T> p,Consumer<T> c,List<T> list) {
System.out.print("[");
for(T i : list) {
if(p.test(i))
c.accept(i);
}
System.out.println("]");
}
static <T> void makeRandomList(Supplier<T> s, List<T> list) {
for(int i = 0 ; i < 10 ; i++) {
list.add(s.get()); // Supplier로 부터 1~100의 난수를 받아서 list에 추가
}
}
}