Java 8 java.util.Function and BiFunction Examples


Java 8 introduced Function Interfaces, Lambda Expressions, and also a lot many utility functions to make use with Lambda's and Streams, you make find these been used very much in all new classes and methods added to Java 8 and later.

In this tutorial, we will take a look at the java.util.Function and java.util.BiFunction Functional Inteface classes,

Java Functional Interface Function

If you go to the Java rt.jar and look at the java.util package you will see the Function.java

@FunctionalInterface
public interface Function<T, R> {

 R apply(T t);

}

T – This is to represent the type of input to the function.
R – This is to represent what Type is the return type of the function.



Example 1: Function that takes a String name and returns a String Greeting

public static void main(String[] args) {
 Function<String,String> greeting = (name) ->  "Hello "+name+"!";
 System.out.println(greeting.apply("Sam"));
}
Output:

Hello Sam!



Example 2: Function that takes a Integer and returns a Boolean true if a Even else false

public static void main(String[] args) {

  Function<Integer,Boolean> evenOdd = (number) -> {
    if (number % 2 == 0) {
      return true;
    } else {
      return false;
    }
  };

 System.out.println(evenOdd.apply(5));
 System.out.println(evenOdd.apply(4));
}
Output:

false
true




Java Functional Interface BiFunction

Again, go the java.util package you will see the BiFunction.java

@FunctionalInterface
public interface BiFunction<T, U, R> {

R apply(T t, U u);

}

T – This is to represent the Type of the first input to the function.
U – This is to represent the Type of the second input to the function.
R – This is to represent what Type is the return type of the function.



Example 1: BiFunction that takes in two Integers and returns theirs Sum

BiFunction<Integer,Integer,Integer> getSum = (n1,n2) -> n1 + n2;
System.out.println(getSum.apply(10,20));
Output:

30



Example 2: BiFunction that takes in two Integers and returns theirs multiplied calue

BiFunction<Integer,Integer,Integer> getSum = (n1,n2) -> n1 * n2;
System.out.println(getSum.apply(10,20));
Output:

200



Have Questions? Post them here!
Advertisements
Try Out Code2care Dev Tools:

Advertisements

Advertisements
Code2care is an initiative to publish and share varied knowledge in programming and technical areas gathered during day-to-day learnings and development activities.

Students and software developers can leverage this portal to find solutions to their various queries without re-inventing the wheel by referring to our easy to understand posts. Technical posts might include learnings, tutorials, trouble-shooting steps, video tutorials, code snippets, how-to, blogs, articles, etc.

🎉 We are celebrating the 10th years of Code2care! Thank you for all your support!

We strongly support Gender Equality & Diversity.