java.util.function 패키지
- java.util.function패키지에 일반적으로 자주 쓰이는 형식의 메서드를 함수형 인터페이스로 미리 정의해 놓았다.
- 매개변수와 반환값의 유무에 따라 4개의 함수형 인터페이스가 정의되어 있고, Function 의 변형으로 Predicate가 있다.
Runnable : 매개변수도 없고, 반환값도 없음
Supplier<T> : 매개변수는 없고 반환값만 있는 공급자
Consumer<T> : 매개변수만 있고, 반환값은 없는 소비자
Function<T,R> : 하나의 매개변수와 하나의 결과를 반환하는 일반적인 함수
Predicate<T> : 조건식을 표현하는데 사용, 하나의 매개변수와 boolean 타입의 반환값
- Predicate는 반환값이 boolean이라는 것만 제외하면 Function과 동일하다.
- Predicate는 조건식을 함수로 표현히는데 시용된다.
java.util.function 패키지 Quiz
- 1~100 범위의 숫자를 반환만 하므로 공급자 > Supplier<Integer>
- 매개변수만 있고 반환값을 없으므로 수요자 > Consumer<Integer>
- 조건식이 있으므로 Predicate<Integer, Boolean>
- 매개변수 하나와 반환값이 있으므로 Function<Integer, Integer>
매개변수가 2개인 함수형 인터페이스
- 매개변수의 개수가 2개인 함수형 인터페이스는 이름 앞에 접두사 "Bi’가 붙는다
- BiSupplier 는없다. 함수의 반환값은 0개 혹은 1개만 가능하기 때문이다. 반환값이 2개일 수는 없다.
- BiConsumer : 두개의 매개변수만 있고. 반환값이 없음
- BiPredicate : 조건식을 표현하는데 사용됨. 매개변수는 둘, 반환값은 boolean
- BiFunction : 두 개의 매개변수를 받아서 하나의 결과 반환
- 두 개 이상의 매개변수를 갖는 함수형 인터페이스가 필요하다면 직접 만들어서 써야한다.
- 만일 3개의 매개변수를 갖는 함수형 인터페이스를 선언한다면 다음과 같을 것이다
UnaryOperator와 BinaryOperator
- Function의 또 다른 변형으로 UnaryOperator와 BinaryOperator 있다.
- 매개변수의 타입과 반환타입의 타입이 모두 일치한다는 점만 제외하고는 Function과 같다.
예제
- 예제속 출력된 값을 먼저 보자
- 첫번째 출력줄[90, 9, 16, 77...] 등은 난수를 만들어내는 람다식 s가 list로 출력된 결과이다.
- 두번째 [90, 16, 54...] 값은 Predicate 조건식에 의해 나누어떨어진 값이 0인 수들만 출력된 것이다.
- 즉 PrintEvenNum 메소드에 의해 짝수들만 출력되었다.
- 세번째 [90,0,10,70...] 출력값은 Function f에의해 i의 일의 자리를 없앤후 출력된 결과들이다.
'Programming > JAVA' 카테고리의 다른 글
자바의 정석 ch14-13,14 : 메서드 참조, 생성자의 메서드 참조 (0) | 2023.04.19 |
---|---|
자바의 정석 ch14-9~12 : Predicate의 결합, CF와 함수형 인터페이스 (0) | 2023.04.18 |
자바의 정석 ch14-5,6 : 함수형 인터페이스 (0) | 2023.04.17 |
자바의 정석 ch14-1~4 : 람다식, 람다식 작성하기 (0) | 2023.04.17 |
자바의 정석 ch13-34~36 : wait()과 notify() (0) | 2023.04.14 |