Predicate Functional Interface Example



interface java.util.function.Predicate<T>  has one abstract method test that accepts an object of generic type T and returns a boolean. 

@FunctionalInterface
public interface Predicate<T>{
    boolean test(T t);
}

One can use this interface when there is a need to represent a boolean expression that uses an object of type T. 

Example1:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class PredicateFlight {
public static void main(String[] args) {
List<String> list = Arrays.asList(" ","","Hello"," Flying ","Birds GM");
Predicate<String> predicate = (word)-> word.trim().length()>0;
List<String> newList = filterData(list,predicate);
newList.forEach(System.out::print);
}

private static <T> List<T> filterData(List<T> list, Predicate<T> predicate){
List<T> resultList = new ArrayList<T>();
for(T t:list) {
if(predicate.test(t)) {
resultList.add(t);
}
}
return resultList;
}
}
Output
Hello Flying Birds GM

Example2:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class PredicateFlight {
   
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1,3,4,5,6,7,8);
        Predicate<Integer> evenNumbersPredicate = (num) -> num %2 == 0;
        List<Integer> result1 = findResult(numbers, evenNumbersPredicate);
        System.out.println("Even Numbers : "+result1);
       
        Predicate<Integer> oddNumbersPredicate = (num) -> num %2 != 0;
        List<Integer> result2 = findResult(numbers, oddNumbersPredicate);
        System.out.println("Odd Numbers : "+result2);
    }
   
    public static List<Integer> findResult(List<Integer> numbers, Predicate<Integer> predicate){
        List<Integer> result = new ArrayList<>();
        for(Integer num : numbers) {
            if(predicate.test(num)) {
                result.add(num);
            }
        }
        return result;
    }
}

Output:
Even Numbers : [4, 6, 8]
Odd Numbers : [1, 3, 5, 7]