Difference Between Predicate and Function in Java 8


Both Predicate and Function are functional interfaces from the Java 8 java.util.function package and are extensively used with Lambdas and Stream API.

In this article, we take a look at how they differ.


Predicate in Java 8:

    Predicate is a boolean-valued functional interface with a test() method that takes one argument and returns either true or false.

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

    Example: To know if a number is even or odd:
        public static void main(String[] args) {
    
            Predicate<Integer> evenOrOdd = num -> num % 2 == 0;
            int testNumberForEvenOdd = 5;
            boolean isEven = evenOrOdd.test(testNumberForEvenOdd);
            System.out.println(testNumberForEvenOdd + " is Even: " + isEven);
    
        }
    Output:

    5 is Even: false



Function in Java 8:

    A Function is a functional interface in Java used for representing a function that takes one argument and produces a result. It is part of the java.util.function package and is denoted by the apply() method, which transforms the input argument into an output of any data type.

    @FunctionalInterface
    public interface Function<T, R> {
        R apply(T t);
    }
    

    Example: Converting an Integer to a String
    package org.code2care.examples;
    
    import java.util.function.Function;
    
    public class FunctionExample {
    
        public static void main(String[] args) {
    
            Function<Integer, String> intToString = num -> "The number is: " + num;
    
            int testNumber = 5;
            String result = intToString.apply(testNumber);
    
            System.out.println(result);
        }
    }
    
    Output:

    The number is: 5


✌ tl;dr summary table

PredicateFunction
Purpose:Determines a condition as true/falseTransforms data
Functional Interface:Predicate<T>Function<T, R>
Method Name:test(T t)apply(T t)
Returns:booleanResult of any data type
Example Usage:Checking if a number is even or oddConverting an integer to a string

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: rakesh@code2care.org

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