and(), or(), negate()로 두 Predicate를 하나로 합성할 수 있다.
Predicate<Integer> p = i -> i < 10;
Predicate<Integer> q = i -> i < 20;
Predicate<Integer> r = i -> i%2 == 0;
Predicate<Integer> notP = p.negate(); // i >= 10
Predicate<Integer> all = notP.and(q).or(r); // 10 <= i && i < 20 || i%2==0
Predicate<Integer> all2 = notP.and(q.or(r)); // 10 <= i && (i < 20 || i%2==0)
System.out.println(notP.test(10));//true
System.out.println(all.test(2)); // true
System.out.println(all2.test(2)); // false
'정리 > Java' 카테고리의 다른 글
Java - 스트림(Stream)과 컬렉션 (0) | 2017.03.03 |
---|---|
Java - 스트림(Stream) (0) | 2017.03.02 |
Java - 함수형 인터페이스(Function) 합성 (0) | 2017.02.28 |
Java - 기본형을 사용하는 함수형 인터페이스 (0) | 2017.02.27 |
Java - 자바에서 제공하는 함수형 인터페이스 (1) | 2017.02.26 |
댓글