Java 8 Predicate default and() function Example

default Predicate<T> and(Predicate<? super T> other)

The and() from the Java 8 Predicate Functional Interface is a default function that returns a composed predicate that represents a short-circuiting logical AND of this predicate and another, i.e. if while evaluating a composed predicate any predicate outcome is false, then the other predicate is not evaluated.

Let's take a look at an example.

We create a Lambda function with a predicate and() that the Person should be,

  • a Male, AND
  • from USA, AND
  • age > 18
package org.code2care.examples;

import java.util.function.Predicate;

class Person {
    private String name;
    private int age;
    private String gender;
    private String nationality;

    public Person(String name, int age, String gender, String nationality) { = name;
        this.age = age;
        this.gender = gender;
        this.nationality = nationality;

    public String getName() {
        return name;

    public int getAge() {
        return age;

    public String getGender() {
        return gender;

    public String getNationality() {
        return nationality;

public class PredicateAndExample {

    public static void main(String... args) {

        Predicate<Person> isMale = person -> "Male".equalsIgnoreCase(person.getGender());
        Predicate<Person> isAdult = person -> person.getAge() > 18;
        Predicate<Person> isFromUSA = person -> "USA".equalsIgnoreCase(person.getNationality());

        Predicate<Person> isEligible = isMale.and(isAdult).and(isFromUSA);

        Person person1 = new Person("Andrew", 25, "Male", "USA");
        Person person2 = new Person("Ela", 17, "Female", "Canada");
        Person person3 = new Person("David", 29, "Male", "England");

        System.out.println("Person 1 Eligibility: " + isEligible.test(person1));
        System.out.println("Person 2 Eligibility: " + isEligible.test(person2));
        System.out.println("Person 3 Eligibility: " + isEligible.test(person3));

Person 1 Eligibility: true
Person 2 Eligibility: false
Person 3 Eligibility: false

Facing issues? Have Questions? Post them here! I am happy to answer!

Author Info:

Rakesh (He/Him) has over 14+ years of experience in Web and Application development. He is the author of insightful How-To articles for Code2care.

Follow him on: X

You can also reach out to him via e-mail:

Copyright © Code2care 2024 | Privacy Policy | About Us | Contact Us | Sitemap