Java 8 BiFunction

2025年5月12日 | 阅读 3 分钟

Java 中,BiFunction 是一个 函数式接口。它是在 Java 8 中引入的。它可以作为 lambda 表达式或方法引用的赋值目标。它属于 java.util.function 包。

该接口接受三个类型参数,如下所示

T: 表示函数的第一个参数。

U: 表示函数的第二个参数。

R: 表示函数的返回结果。

T、U 和 R 是可以表示为 (T, U)->R 的描述符。

BiFunction 接口方法

该接口具有以下两个方法

  • apply()
  • andThen()

BiFunction apply() 方法

apply() 方法对给定参数执行操作并返回函数结果。

语法

参数

t: 表示第一个函数参数。

u: 表示第二个函数参数。

返回值

它返回函数结果。

示例

BiFunctionApplyExample.java

输出

The sum of x and y is: 35 

BiFunction andThen() 方法

它返回一个组合函数。这意味着该方法首先应用此函数,然后应用 after 函数。如果任何一个函数的计算抛出异常,它都会被传递给组合函数的调用者。

语法

类型参数

V: 表示 after() 函数的输出类型,以及组合函数的输出类型。

参数

after: 在此函数之后应用。

返回值

它返回一个组合函数。这意味着该方法首先应用此函数,然后应用 after 函数。

如果 after 为 null,该方法将抛出 NullPointerException

示例

BiFunctionAndThenExample.java

输出

The result is: 350

让我们在 Java 程序中实现上述两个方法,并理解 BiFunction 接口的工作原理。

BiFinction 示例

BiFunctionExample1.java

输出

46
576  

在上面的程序中,语句 System.out.println(f1.andThen(f2).apply(2, 3)); 可以写成如下形式

Integer r1 = f1.apply(11, 13); 
Integer r2 = f2.apply(r1); 
System.out.println(r2); //returns and print 576

让我们看另一个例子。

BiFunctionExample2.java

输出

[Key=1, Olivia(1)]
[Key=2, Noah(2)]
[Key=3, John(1)]
[Key=4, Alex(1)]
[Key=5, Emma(1)]
[Key=6, Amelia(1)]
[Key=7, Noah(2)]