We can chain instances of Predicate functional interfaces together to create complex conditions by using methods and(), or(), and negate().
Let's take a look with an example.
package org.code2care.examples;
import java.util.function.Predicate;
public class Java8PredicateChainingExample {
public static void main(String... args) {
Predicate<Integer> isEven = num -> num % 2 == 0;
Predicate<Integer> isPositive = num -> num > 0;
//Chaining using and() or() and negate()
Predicate<Integer> isEvenAndPositive = isEven.and(isPositive);
Predicate<Integer> isEvenOrPositive = isEven.or(isPositive);
Predicate<Integer> isNotEven = isEven.negate();
int testNumber1 = 16;
int testNumber2 = -13;
boolean result1 = isEvenAndPositive.test(testNumber1);
boolean result2 = isEvenAndPositive.test(testNumber2);
boolean result3 = isEvenOrPositive.test(testNumber1);
boolean result4 = isEvenOrPositive.test(testNumber2);
boolean result5 = isNotEven.test(testNumber1);
System.out.println(testNumber1 + " is even and positive: " + result1);
System.out.println(testNumber2 + " is even and positive: " + result2);
System.out.println(testNumber1 + " is even or positive: " + result3);
System.out.println(testNumber2 + " is even or positive: " + result4);
System.out.println(testNumber1 + " is not even: " + result5);
}
}
Output:
Provide Feedback For This Article
We take your feedback seriously and use it to improve our content. Thank you for helping us serve you better!
😊 Thanks for your time, your feedback has been registered!
Comments & Discussion
Facing issues? Have questions? Post them here! We're happy to help!