Java 1.8 BiFunction 函数式接口

更新时间 2023-10-10 12:06:16

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 50w+ 字,讲解图 2200+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 1700+ 小伙伴加入学习 ,欢迎点击围观

BiFunction 接口代表一个接受两个参数并产生结果的操作。它在 Java 中被广泛用于对两个输入参数进行操作,然后返回一个结果。

本教程将深入介绍 Java 1.8 中的 BiFunction 接口,并通过示例代码演示如何使用它。

BiFunction 接口概览

java.util.function 包中,BiFunction 接口定义如下:

@FunctionalInterface
public interface BiFunction<T, U, R> {
    R apply(T t, U u);
}
  • T 表示第一个输入参数的类型。
  • U 表示第二个输入参数的类型。
  • R 表示返回结果的类型。
  • apply(T t, U u) 是 BiFunction 接口中唯一的抽象方法,用于对输入参数 tu 进行操作,并返回结果。

BiFunction 接口是一个泛型接口,它可以接受不同类型的参数和返回不同类型的结果。

使用 BiFunction 接口

让我们通过几个示例来说明如何使用 BiFunction 接口。

示例 1:计算两个数字的和

创建一个 BiFunction 接口实例,用于计算两个数字的和。

BiFunction<Integer, Integer, Integer> add = (num1, num2) -> num1 + num2;
int result = add.apply(5, 10);
System.out.println("Sum: " + result); // 输出 "Sum: 15"

在这个例子中,我们创建了一个 BiFunction 对象 add,它将两个整数相加并返回结果。我们调用 apply() 方法来执行 BiFunction,并计算 5 和 10 的和并输出结果。

示例 2:合并两个字符串

使用 BiFunction 接口合并两个字符串。

javaCopy codeBiFunction<String, String, String> mergeStrings = (str1, str2) -> str1 + " " + str2;
String result = mergeStrings.apply("Hello", "World");
System.out.println("Merged String: " + result); // 输出 "Merged String: Hello World"

在这个例子中,我们创建了一个 BiFunction 对象 mergeStrings,它将两个字符串合并成一个新的字符串,并返回结果。我们调用 apply() 方法来执行 BiFunction,并合并 "Hello" 和 "World" 两个字符串并输出结果。

示例 3:两个数字的乘积

使用 BiFunction 接口计算两个数字的乘积。

BiFunction<Integer, Integer, Integer> multiply = (num1, num2) -> num1 * num2;
int result = multiply.apply(3, 4);
System.out.println("Product: " + result); // 输出 "Product: 12"

在这个例子中,我们创建了一个 BiFunction 对象 multiply,它将两个整数相乘并返回结果。我们调用 apply() 方法来执行 BiFunction,并计算 3 和 4 的乘积并输出结果。

BiFunction 的组合

BiFunction 还提供了一些默认方法用于函数的组合:

  • andThen(Function after): 返回一个新的 Function,它表示当前 BiFunction 和另一个 Function 的顺序执行。

下面是一个组合示例:

BiFunction<Integer, Integer, Integer> add = (num1, num2) -> num1 + num2;
Function<Integer, Integer> square = num -> num * num;

BiFunction<Integer, Integer, Integer> addAndSquare = add.andThen(square);

int result = addAndSquare.apply(3, 4);
System.out.println("Result: " + result); // 输出 "Result: 49"

在这个例子中,我们首先创建了一个 BiFunction 对象 add,它将两个整数相加。然后,我们创建了一个 Function 对象 square,它将整数平方。最后,我们使用 andThen() 方法将这两个函数组合成一个新的 BiFunction addAndSquare,它先执行相加操作,然后再执行平方操作。

总结

Java 1.8 中的 BiFunction 接口为函数式编程提供了强大的支持。通过使用 BiFunction 接口,我们可以轻松地定义并执行接受两个参数并产生结果的操作。BiFunction 接口特别适用于对两个输入参数进行操作,然后返回一个结果。