https://youtu.be/HPxnDM_FkGc?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp
📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다.
[java.util.function패키지]
- 자주 사용되는 다양함 함수형 인터페이스를 제공한다.
- 우리가 사용하는 함수의 갯수가 별로 없기 때문에 자바 자체에서 표준으로 만들어 놓은 것을 공통으로 사용하는 구조이다.
[매개변수가 2개인 함수형 인터페이스]
- Bisupplier는 없는 이유가 함수 반환값이 0또는 1이기 때문에 없다.
- 매개변수 3개를 가진 경우의 함수형 인터페이스는 없지만 우리가 직접 만들어서는 사용이 가능하다.
[매개변수의 타입과 반환타입이 일치하는 함수형 인터페이스]
[예제]
package javajungsuk;
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 Java14_2 {
public static void main(String[] args) {
Supplier<Integer> s = () -> (int)(Math.random()*100) +1;
Consumer<Integer> c = i -> System.out.println(i+", ");
Predicate<Integer> p = i -> i%2 == 0;
Function<Integer, Integer> f = i -> i / 10 * 10; //1의자리를 없앰
List<Integer> list = new ArrayList<>();
makeRandomList(s,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;
}
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());
}
}
}
'Java > 객체지향' 카테고리의 다른 글
[객체지향][람다식/Lambda Expression] - 메서드 참조, 생성자의 메서드 참조 (0) | 2022.03.12 |
---|---|
[객체지향][람다식/Lambda Expression] - Predicate의 결합. CF와 함수형 인터페이스 (0) | 2022.03.09 |
[객체지향][람다식/Lambda Expression] - 함수형 인터페이스 (0) | 2022.03.09 |
[객체지향][람다식/Lambda Expression] - 람다식 (0) | 2022.03.05 |
[객체지향][쓰레드/thread] - 쓰레드 동기화의 단점을 보완하기 위한 wait()와 notify() (0) | 2022.03.04 |