java.util.function패키지가 제공하는 FunctionalInterface정리
- JAVA/JAVA 프로그래밍
- 2018. 5. 16. 00:47
java.util.function패키지가 제공하는 FunctionalInterface정리
FunctionalInterface는 JDK8부터 제공해주는 특별한 인터페이스이다. 오직하나의 추상메소드를 갖는 메소드를 FunctionnalInterface라고 말하며 FunctionalInterface를 매개변수로 받는 메소드는 FunctionalInterface의 구현체 대신에 람다식을 전달할 수 있다. FunctionalInterface는 직접 정의해서 사용해도 되지만, 기본적으로 java.util.function 패키지에 정의되어 있는 FunctionalInterface를 정리한다.
■ 기본형 함수형 인터페이스
FuntionalInterface |
method |
설명 |
java.lang.Runnalbe |
void run() |
매개변수, 반환 모두 없음 |
Supplier<T> |
T get() |
매개변수 없음, 반환 T |
Comsumer<T> |
void accept(T t) |
매개변수 T, 반환 없음 |
Function<T, R> |
R apply(T t) |
매개변수 T, 반환 R |
Predicate<T> |
boolean test(T t) |
매개변수 T, 반환 boolean |
■ 매개변수가 2개인 함수형 인터페이스
위에 정의된 기본형인 Comsumer<T>, Predicate<T>, Function<T>를 매개변수 2개 받도록 변경한 인터페이스 들.
FuntionalInterface |
method |
설명 |
BiComsumer<T, U> | void accept(T t, U u) |
매개변수 2개, 반환 없음 |
BiPredicate<T, U> |
boolean test(T t, U u) |
매개변수 2개, 반환 boolean |
BiFunction<T, U, R> |
R apply(T t, U u) |
매개변수 2개, 반환 R |
■ 입력과 반환이 동일한 UnaryOperation, BinaryOperation
UnaryOperation는 기본형 Function<T>와 유사하게 매개변수 1개와 반환타입을 갖는데, 매개변수와 반환값이 동일한 경우에 사용된다. BinaryOperation는 BiFuntion<T, U, R>과 유사하게 매개변수 2개, 반환타입을 갖는데 입력타입과 반환타입이 모두 동일한 경우이다.
FuntionalInterface | method | 설명 |
UnaryOperation<T> | T apply(T t) | 매개변수 1개로 반환타입과 동일 |
BinaryOperation<T> | T apply(T t, T t) | 매개변수 2개, 매개변수와 반환유형 동일 |
■ 함수형 인터페이스가 적용된 CollectionFramework API
인터페이스 |
메서드 |
설명 |
Collection |
boolean removeif(Predicate<E> filter) |
조건에 맞는 요소를 삭제 |
List |
void replaceAll(UnaryOperator<E> opertator) |
모든 요소를 반환 값으로 대체 |
Iterable |
void forEach(Consumer<T> action) |
모든 요소를 순회하여 action 수행 |
Map |
V compute(K key, BiFunction<K,V,V> f) |
지정된 키의 값에 작업 f 수행 |
V computeIfAbsent(K key, Function<K,V> f) | 키가 없으면, 작업 f수행 후 추가 | |
V computeIfPresent(K key, BiFunction<K,V,V> f) | 지정된 키가 있을 때, 작업 f 수행 | |
V merge(K key, V value, BiFunction<V,V,V> f) | 모든 요소에 병합작업 f 수행 | |
void forEach(BiConsumer<K,V> action) | 모든 요소에 작업 action 수행 | |
void replaceAll(BiFunction<K,V,V> f) | 모든 요소에 치환작업 f 수행 |
Map.compute* 메소드들은 주로 Map의 value를 특정 작업을 수행후 반환하는 역할을 한다.
'JAVA > JAVA 프로그래밍' 카테고리의 다른 글
JAVA8 Lambda 람다는 @FunctionalInterface의 구현체이다. (0) | 2018.05.14 |
---|---|
JAVA 7 New Features 새로운 기능 변경사항 정리 (0) | 2018.05.07 |
삽입정렬 삽입소트 insertSort 자바구현 (0) | 2018.04.28 |
버블정렬 버블소트 BubleSort 자바구현 (0) | 2018.04.28 |
Comparable, Comparator 자바 정렬 (0) | 2018.04.28 |
이 글을 공유하기