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:
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:
✌ tl;dr summary table
| Predicate | Function | |
|---|---|---|
| Purpose: | Determines a condition as true/false | Transforms data |
| Functional Interface: | Predicate<T> | Function<T, R> |
| Method Name: | test(T t) | apply(T t) |
| Returns: | boolean | Result of any data type |
| Example Usage: | Checking if a number is even or odd | Converting an integer to a string |
Provide Feedback For This Article
We take your feedback seriously and use it to improve our content. Thank you for helping us serve you better!
😊 Thanks for your time, your feedback has been registered!
Comments & Discussion
Facing issues? Have questions? Post them here! We're happy to help!