Learnitweb

BiFunction interface in Java

BiFunction interface was introduced in Java 8 and is available in java.util.function package. BiFunction represents a function that accepts two arguments and produces a result.

BiFunction is similar to Function interface with the difference that BiFunction accepts two arguments whereas Function arguments accepts one argument.

Methods in BiFunction interface

default<V> BiFunction<T,U,V> andThen(Function<? super R,? extends V> after)This method returns a composed function that first applies this function to its input, and then after function is applied to the result.
R apply(T t, U u)Applies this function to the given arguments.

BiFunction example 1

import java.util.function.BiFunction;

public class BiFunctionExample {
	public static void main(String[] args) {
		//BiFunction to calculate sum of two numbers
		BiFunction<Integer, Integer, Integer> biFunctionSum = (x, y) -> x + y;
		
		//BiFunction to calculate product of two numbers
		BiFunction<Integer, Integer, Integer> biFunctionProduct = (x, y) -> x * y;

		System.out.println("biFunctionSum result " + biFunctionSum.apply(2, 3));
		System.out.println("biFunctionProduct result " + biFunctionProduct.apply(2, 3));
		
	}
}

Output

biFunctionSum result 5
biFunctionProduct result 6

BiFunction andThen() method example

In this example, we’ll first use BiFunction operation to calculate sum to two number and then double the result using andThen() method.

import java.util.function.BiFunction;
import java.util.function.Function;

public class BiFunctionExample {
	public static void main(String[] args) {
		//BiFunction to calculate sum of two numbers
		BiFunction<Integer, Integer, Integer> biFunctionSum = (x, y) -> x + y;
		
		//Function takes a number and multiplies is by 2
		Function<Integer, Integer> biFunctionDouble = (x) -> x * 2;

		// Example of andThen() method
		//First biFunctionSum result is calculated (2+3)
		//and then biFunctionDouble operation is performed (5*2) 
		Integer result = biFunctionSum.andThen(biFunctionDouble).apply(2,3);
		System.out.println("result: " + result);
		
	}
}

Output

result: 10