springjava.com
  • Core Java
  • Spring Core
  • Spring Boot
  • Spring MVC
  • Angular Tutorial

Related Posts

  • Sorting ArrayList of Objects in Java How to Create and Initialize ArrayList in Java List in Java | Interface, Methods, Example Java Synchronized with Examples Generics in Java Java Serialization and Deserialization with Example What are the differences between overloading and overriding What is Overriding in Java What is Method Overloading in Java Java for each loop | Enhanced for loop
Core Java

What is Predicate Functional Interface in Java 8

Last Updated: 12-08-2022 Springjava

In implementing Lambda Expression we need a Functional Interface that’s why a Predefined Function Interface is given by Java People from Java 8 onwards. This is available in the “java.util.function” package. A predefined Functional Interface is making Lambda Expression used in a common coding activity. Predicate Predefined  Functional Interface is used for conditional check and returns a  boolean result as an output.
Prototype:

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

}

→ T - It is the type of input to the predicate.
Example:

import java.util.function.Predicate;

public class Test {

  public static void main(String[] args) {

    Predicate < Integer > p = i -> i % 2 == 0;

    System.out.println("Is No. Even: " + p.test(10));

    System.out.println("Is No. Even: " + p.test(15));

    System.out.println("Is No. Even: " + p.test(20));

    System.out.println("Is No. Even: " + p.test(5));

  }
}

→ In the above example, we can check if the input number is even or not by using Predicate.
→ See the lines of code are reduced than without implementation of Lambda expression.
Output:

Is No. Even: true
Is No. Even: false
Is No. Even: true
Is No. Even: false

Example: 

import java.util.function.Predicate;

public class Test {

  public static void main(String[] args) {

    String[] s = {
      "Ramesh",
      "Ravi",
      "Raju",
      "Raghav",
      "Dinesh"
    };

    Predicate < String > p = s1 -> s1.length() > 5;

    for (String name: s) {

      if (p.test(name)) {

        System.out.println(name);

      }
     }
   }
}

→ In the above example, we can check String length is greater than five by using Predicate.
Output:

Ramesh
Raghav
Dinesh

Example: 

package test;

import java.util.ArrayList;

import java.util.List;

import java.util.function.Predicate;

class Student {

  String name;

  int marks;

  public Student(String name, int marks) {

    this.name = name;

    this.marks = marks;

  }

}

public class Test {

  public static void main(String[] args) {

    List < Student > listStudnt = new ArrayList < Student > ();

    listStudnt.add(new Student("Raj", 70));

    listStudnt.add(new Student("Vineet", 60));

    listStudnt.add(new Student("Raghav", 40));

    listStudnt.add(new Student("Sham", 30));

    listStudnt.add(new Student("Dinesh", 50));

    Predicate < Student > p = stu -> stu.marks > 40;

    for (Student stdnt: listStudnt) {

      if (p.test(stdnt)) {

        System.out.println("Name: " + stdnt.name + " Marks: " + stdnt.marks);

      }
    }
  }
}

→ In the above example, we can use Predicate in our class.
→ We also achieve this task through an “ if ” conditional check. But in future we are required to check more conditions then we have to perform more time in the “ if ” conditional check that’s why it is better to use Predicate and save all conditions into Predicate.
Output:

Name: Raj Marks: 70
Name: Vineet Marks: 60
Name: Dinesh Marks: 50

If we want to check whether the number is even or not and also check whether the number is greater than 10. In this type of conditional checking by using a Predicate we need two Predicates like
p1—>checking for an even number
p2—>checking for numbers greater than 10
We achieve this from Predicate Joining like:
p1.and(p2).test(20)

Predicate Joining:
Multiple Predicates are combined to check complex conditional expressions. This is called Predicate Joining.
→ p1.and(p2)------------Satisfies both conditions
→ p1.or(p2)---------------Satisfies one condition or other
→ p1.negate()--------------Opposite of p1
Example:

import java.util.function.Predicate;

public class Test {

public static void main(String[] args) {

int[] n = { 6, 8, 30, 25, 30, 45, 40, 50 };

Predicate<Integer> p1 = i -> i % 2 == 0;

Predicate<Integer> p2 = i -> i >=10;

System.out.println("The numbers are:");

for (int n1 : n) {

if (p1.and(p2).test(n1)) {

System.out.println(n1);
     }
  }
 }
}

→ In the above example, we can check whether the number is even and greater than or equal to 10  by using Predicate Joining.
Output:

The numbers are:
30
30
40
50

Example: 

import java.util.function.Predicate;

public class Test {

public static void main(String[] args) {

int[] n = {5,6, 8, 25, 30, 45, 40, 50 };

Predicate<Integer> p1 = i -> i % 2 == 0;

Predicate<Integer> p2 = i -> i >=10;

System.out.println("The numbers are:");

for (int n1 : n) {

if (p1.or(p2).test(n1)) {

System.out.println(n1);

}
}
}
}

→ In the above example, we can check whether the number is even or greater than equal to 10  by using Predicate Joining.
Output:

The numbers are:
6
8
25
30
45
40
50

Example: 

import java.util.function.Predicate;

public class Test {

public static void main(String[] args) {

int[] n = {5,6, 8, 25, 30, 45, 40, 50 };

Predicate<Integer> p1 = i -> i % 2 == 0;

System.out.println("The numbers which are not even:");

for (int n1 : n) {

if (p1.negate().test(n1)) {

System.out.println(n1);

}
}
}
}

→ In the above example, we can check the number is not even by using Predicate Joining.
Output:

The numbers which are not even:
5
25
45

Conclusion:
This topic is explained What is Predicate? How to use Predicate? What is Predicate Joining? How to use Predicate Joining?

What is a Java Bean Class? Java 8 Features Write Less Lines Of Code Lambda Expression In Java 8 Features

Leave your thought here

Your email address will not be published. Required fields are marked *

springjava_com
  • springjava.com
Learn
    • Core Java
    • Spring Core
    • Spring Boot
    • Spring MVC
    • Angular Tutorial
Quick links
  • About Us
  • Contact Us
  • Privacy Policy
© 2021 Spring Java. All Rights Reserved.
springjava.com
  • Core Java
  • Spring Core
  • Spring Boot
  • Spring MVC
  • Angular Tutorial
  • About Us
  • Contact Us