Predicate<Integer> p = i -> i <100;
Predicate<Integer> q = i -> i <200;
Predicate<Integer> r = i -> i%2 == 0;
Predicate<Integer> notP = p.negate();
// i >= 100
Predicate<Integer> all = notP.and(q).or(r);
// 100 <= i &&<200 \\ i%2==0
Predicate<Integer> all2 = notP.and(q.or(r));
// 100 <=i && (i<200 \\ i % 2 ==0)
System.out.println(all.test(2)); // true
System.out.println(all2.test(2)); // false
predicate를 통해서 비교, 논리 연산을 하나의 참조변수에 담고 Predicate를 참조하는 변수를 통해서 test 메서드를 호출하여 실행함
등가비교를 위한 Predicate의 작성에는 isEqual()를 사용(static메서드)
Predicate<String> p = Predicate.isEqual(str1) //isEquals()은 static 메서드
Boolean result = p.test(str2); //str1과 str2가 같은지 비교한 결과를 반환
boolean result = Predicate.isEqual(str1).test(str2);