본문 바로가기

JAVA

[JAVA8] 람다 표현식을 조합할 수 있는 유용한 메서드 알아보기

728x90
반응형

1.Comparator
- Comparator.comparing : comparing은 Comparator의 정적 메서드로 Function을 인자로 받는다.
<예> Comparator<Test> c = Comparator.comparing(Test::getTest);
- reversed : 역정렬
<예> Comparator.comparing(Test::getTest).reversed();
- thenComparing : 첫 비교결과가 동일할 경우 다음 비교 Function을 설정할 수 있다.
<예> Comparator.comparing(Test::getTest).reversed().thenComparing(Test::getScore());

2. Predicate
- negate : 기존 Predicate을 반전 시킬때
<예> Predicate<Test> notMaxScore = maxScore.negate();
- and : Predicate들을 and 조건으로 연결하여 하나의 Predicate로 만들 때.
<예> Predicate<Test> maxAndMin = maxScore.and(Test::min);
- or : Predicate들을 or 조건으로 연결하여 하나의 Predicate로 만들 때.
<예> Predicate<Test> maxAndMinOrMath = maxScore.and(Test::min).or(Test::math);

3. Function
- andThen : 주어진 함수를 먼저 연산하고 연산한 결과를 다음 함수에 전달한다.
<예>
Function<Integer, Integer> f = x -> x + 4;
Function<Integer, Integer> g = x -> x * 4;
Function<Integer, Integer> h = f.andThen(g);
-> f를 먼저 연산하고 g를 연산
h.apply(1) -> 20

- compose : 인수로 주어진 함수를 먼저 연산하고 그 결과를 앞선 함수에 적용한다. Function<Integer, Integer> f = x -> x + 4;
Function<Integer, Integer> g = x -> x * 4;
Function<Integer, Integer> h = f.compose(g);
-> g를 먼저 연산하고 f를 연산
h.apply(1) -> 8

 

*참고 : Java 8 in Action (한빛 미디어) 


728x90
반응형