🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
🚀 Introduction to Java BiFunction Functional Interface
In Java functional programming, the BiFunction<T, U, R> interface (from java.util.function) is a functional interface that takes two input arguments and returns a result.
✅ T (First Input Type): The type of the first argument.
✅ U (Second Input Type): The type of the second argument.
✅ R (Return Type): The type of the result.
💡 Common Use Cases:
✔ Performing calculations — Addition, subtraction, multiplication, and division.
✔ Processing two inputs — Combining two values into one result.
✔ Transforming and mapping values — Applying a transformation based on two inputs.
📌 In this article, you’ll learn:
✅ How to use BiFunction<T, U, R> with examples.
✅ How to use apply() to process values.
✅ How to chain BiFunction with Function using andThen().
✅ Real-world use cases where BiFunction improves Java applications.
1️⃣ Using apply() to Perform Arithmetic Operations
The apply(T t, U u) method processes two inputs and returns a result.
✔ Example: Performing Basic Arithmetic Operations
import java.util.function.BiFunction;
public class BiFunctionExample {
public static void main(String[] args) {
// ✅ BiFunction to add two numbers
BiFunction<Integer, Integer, Integer> addition = (num1, num2) -> num1 + num2;
int result = addition.apply(10, 20);
System.out.println("Addition: " + result); // Output: Addition: 30
// ✅ BiFunction to subtract two numbers
BiFunction<Integer, Integer, Integer> subtraction = (num1, num2) -> num1 - num2;
int result1 = subtraction.apply(20, 10);
System.out.println("Subtraction: " + result1); // Output: Subtraction: 10
// ✅ BiFunction to multiply two numbers
BiFunction<Integer, Integer, Integer> multiplication = (num1, num2) -> num1 * num2;
int result2 = multiplication.apply(20, 10);
System.out.println("Multiplication: " + result2); // Output: Multiplication: 200
// ✅ BiFunction to divide two numbers
BiFunction<Integer, Integer, Integer> division = (num1, num2) -> num1 / num2;
int result3 = division.apply(20, 10);
System.out.println("Division: " + result3); // Output: Division: 2
}
}📌 Why use BiFunction for arithmetic operations?
✅ Encapsulates mathematical operations into reusable functions.
✅ Provides a flexible way to perform calculations with two inputs.
🚀 Use BiFunction<T, U, R> when working with operations that require two inputs!
2️⃣ Using andThen() to Transform Results
The andThen(Function<R, V>) method allows chaining a BiFunction with a Function for further transformation.
✔ Example: Multiplying Two Numbers and Converting the Result to a String
import java.util.function.BiFunction;
import java.util.function.Function;
public class AndThenBiFunctionExample {
public static void main(String[] args) {
// ✅ BiFunction to calculate the product of two numbers
BiFunction<Integer, Integer, Integer> multiplyNumbers = (num1, num2) -> num1 * num2;
// ✅ Function to convert the result to a string
Function<Integer, String> convertToString = num -> "Product: " + num;
// ✅ Chain BiFunction and Function using andThen()
BiFunction<Integer, Integer, String> multipleAndConvert = multiplyNumbers.andThen(convertToString);
String result = multipleAndConvert.apply(5, 4);
System.out.println(result); // Output: Product: 20
}
}📌 Why use andThen()?
✅ Allows multiple transformations in a single step.
✅ Improves readability and modularity.
🚀 Use andThen() to process and transform results efficiently!
3️⃣ Using BiFunction to Calculate Rectangle Area
✔ Example: Calculating the Area of a Rectangle
import java.util.function.BiFunction;
public class RectangleAreaBiFunctionExample {
public static void main(String[] args) {
// ✅ BiFunction to calculate the area of a rectangle
BiFunction<Integer, Integer, Integer> calculateArea = (length, width) -> length * width;
int area = calculateArea.apply(5, 4);
System.out.println("Area of rectangle: " + area); // Output: Area of rectangle: 20
}
}📌 Why use BiFunction for geometric calculations?
✅ Encapsulates the logic for computing an area.
✅ Reusability in applications dealing with geometry and measurements.
🚀 Use BiFunction when working with formulas that take two inputs!
4️⃣ Real-World Use Cases of BiFunction Interface
✔ Use Case 1: Combining First Name and Last Name
import java.util.function.BiFunction;
public class FullNameExample {
public static void main(String[] args) {
// ✅ BiFunction to concatenate first and last names
BiFunction<String, String, String> fullName = (firstName, lastName) -> firstName + " " + lastName;
String name = fullName.apply("Amit", "Sharma");
System.out.println("Full Name: " + name); // Output: Full Name: Amit Sharma
}
}📌 Why use BiFunction for name concatenation?
✅ Improves readability and modularity.
✅ Avoids manual string concatenation everywhere.
🚀 Use BiFunction when combining two strings dynamically!
✔ Use Case 2: Calculating Employee Salary Based on Hours Worked
import java.util.function.BiFunction;
class Employee {
String name;
double hourlyRate;
public Employee(String name, double hourlyRate) {
this.name = name;
this.hourlyRate = hourlyRate;
}
}
public class SalaryCalculator {
public static void main(String[] args) {
// ✅ BiFunction to calculate salary based on hours worked
BiFunction<Employee, Integer, Double> calculateSalary =
(employee, hoursWorked) -> employee.hourlyRate * hoursWorked;
Employee emp = new Employee("Ramesh", 50.0);
double salary = calculateSalary.apply(emp, 40);
System.out.println("Salary: $" + salary); // Output: Salary: $2000.0
}
}📌 Why use BiFunction for salary calculation?
✅ Encapsulates salary computation logic into a reusable function.
✅ Ensures cleaner and maintainable payroll calculations.
🚀 Use BiFunction for financial calculations based on two parameters!
🔥 Best Practices for Using BiFunction Functional Interface

BiFunction Functional Interface🔑 Key Takeaways
✅ The BiFunction<T, U, R> interface processes two inputs and returns a result.
✅ Use apply() for performing operations on two values.
✅ Use andThen() to transform the output of a BiFunction.
✅ Apply BiFunction in real-world cases like salary calculation and name concatenation.
By mastering the BiFunction functional interface, your Java code will be more modular, efficient, and structured! 🚀
Comments
Post a Comment
Leave Comment