MapleStory Cookie With Halo

☕ JAVA/☕ Class & Method

[JAVA]Predicate 결합, Function 결합

뉴이 NUEY 2024. 12. 12. 00:44
반응형

 

시작 전에 Predicate와 Function가 뭔 지 모르겠다면❓

2024.12.01 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA]java.util.function 패키지

 


 

and() or() negate()를 이용해
두 Predicate를 결합할 수 있다.

 

Predicate의 사용법만 안다면 바로 이해할 수 있을만한 코드이다.

💡 negate()
는 !와 같이 not이다. true→false, false→true로 바꿔준다.

 


 

Predicate.isEqual()

: 두 인수가 같은 지 확인한다.

result당연히 true. 왼쪽을 오른쪽 코드처럼 간단히 적을 수 있다.

 


 

.andThen()
Function 결합

  • Function<입력타입, 출력타입> 이라 두개의 Function을 합치려면
    • Function<입력타입, 출력타입>
      Function<입력타입, 출력타입>
      이 두개가 같아야 한다.

  • 위 코드는 f 실행 후 g를 실행하는 함수를 합친 것이다.

💡 참고로 compose()로도 Function함수 결합이 가능하다.
f.compose(g)를 적으면 g 다음 f가 실행되는 것일 뿐이다.
따라서 그냥 andThen()을 써도 무방하다.

항등 함수
identity function
: 입력값 그대로 출력.

입력 받은 그대로를 출력하기에 하는 일 없어보이는 함수이지만, 다 쓸모가 있다고 한다.

 


 

Collection과 함수형 인터페이스
JDK1.8부터 사용가능

인터페이스 메서드 설명
Collection boolean removeIf(Predicate<E> filter) 조건에 맞는 요소를 삭제.
List void replaceAll(UnaryOperator<E> operator) 모든 요소를 변환하여 대체.
Iterable ⭐ void forEach(Consumer<T> action) 모든 요소에 작업 action을 수행.
Map V conpute(K key, BiFunction<K, V, V> f) 지정된 키의 값에 작업 f 수행.
V conputeIf(K key, Function<K, V> f) 키가 없으면, 작업 f 수행.
V conputePresent(K key, BiFunction<K, V, V> f) 지정된 키가 있을때 작업 f 행.
V merge(K key, V value, BiFunction<K, V, V> f) 모든 요소에 병합작업 f 수행.
void forEach(BiConsumer<K, V> action) 모든 요소에 작업 action을 수행.
void replaceAll (BiConsumer<K, V, V> f) 모든 요소에 치환작업f 수행.

 


참조영상

반응형