Java8 - java.util.function.Predicate Interface tutorials Examples
The predicate is a functional interface introduced in java8. It has only one abstract method. The predicate interface is in java. util.function package and it takes a single argument. It evaluates the predicate on the given parameter.
public interface Predicate<T> {
boolean test(T t)
}
T is input value test(T t) - Only single abstract method. return true if the given input value matches the condition, else return false
Predicate Test method example
import java.util.function.Predicate;
public class PredicateDemo {
public static void main(String[] args) {
Predicate<Integer> predicateFunction = num -> (num > 0);
System.out.println(predicateFunction.test(-1));
System.out.println(predicateFunction.test(50));
}
}
and output of the above code is
false true
Predicate test static method Example
import java.util.function.Predicate;
public class PredicateDemo {
static Boolean nullCheck(Object obj) {
if (obj == null)
return true;
else
return false;
}
public static void main(String[] args) {
// Predicate<Integer> predicateFunction = num -> (num > 0)
Predicate<Object> predicate = PredicateDemo::nullCheck;
System.out.println(predicate.test(null));
System.out.println(predicate.test(50));
}
}
and output is
true
false
Predicate Default methods
Method
Description
and()
return the result of Short circuit logical AND operator of given input parameters
negate()
Applies logical negate of the predicate
or()
return the result of Short circuit logical OR operator of given input parameters
Default methods Usage example
import java.util.function.Predicate;
public class PredicateDemo {
public static void main(String[] args) {
Predicate<Integer> greaterThanFifity = (i) -> i > 50;
Predicate<Integer> lowerThanHundred = (i) -> i < 100;
boolean output = greaterThanFifity.and(lowerThanHundred).test(55);
System.out.println(output);
boolean output1 = greaterThanFifity.and(lowerThanHundred).negate().test(55);
System.out.println(output1);
boolean output2 = greaterThanFifity.or(lowerThanHundred).test(55);
System.out.println(output1);
}
}
and output is
true
false
false
Predicate lambda express method reference example
Example1 is an example for the usage of lambda expressions Example2 is an example of method reference. Methods are called using a double colon:: symbol.
package org.cloudhadoop.functions;
import java.util.function.Predicate;
public class MyPredicateExample {
public static Boolean isPositiveNumber(int number) {
return number > 0 ? true : false;
}
public static void main(String[] args) {
// Example1
Predicate<Integer> lambdaPredicate = (n) -> MyPredicateExample.isPositiveNumber(n);
System.out.println(lambdaPredicate.test(45));
// Example2
Predicate<Integer> methodRefPredicate = MyPredicateExample::isPositiveNumber;
System.out.println(methodRefPredicate.test(-35));
}
}
Output is
true
false