java 8 中 BiConsumer 接口的使用

Usage of BiConsumer interface in java 8

我是使用流和函数式接口进行编程的新手,java.util.function.BiConsumer 描述了方法 accept,如下面的文档,理解起来不是很清楚

void accept(T t,
            U u)
Performs this operation on the given arguments.
Parameters:
t - the first input argument
u - the second input argument

可以使用如下的lamda表达式引用函数式接口

BiConsumer<String,String> a=(a,b)->{
 
}

但是“这个操作在这里到底是什么意思”是什么意思。提前致谢

But what does the "this operation" mean here exactly?

BiConsumer 接口实际上是任何接受两个引用类型(或在您的示例中,相同类型)的两个参数并且 return 什么都没有的函数的签名。符合此接口的函数 可以 对它们做任何事情。它可以打印它们。它可以将它们添加到某些地图中。它可以……把它们扔掉,什么都不做。

“此操作”是指(实际上)实现接口的 lambda。或者更准确地说,lambda 的作用.

所以...基本上...当您将 lambda 作为 BiConsumer 类型的参数传递(比如说)给某个方法时,该方法可以调用 accept(arg1, arg2) expect 它将执行 javadoc 所说的;即,将 lambda(或其他)实现的“操作”应用于这两个参数。

现在 BiConsumer 界面有点不寻常,因为它没有 return 任何东西。所以它不像其他功能接口那样被广泛使用。但是如果你正在寻找例子,试试这个:

请注意,BiConsumer 表示采用 2 个参数的“操作”。

例如,如果您有

BiConsumer<String,String> foo = (a, b) -> System.out.println(a + b);

foo 表示操作 System.out.println(a + b); - 打印连接在一起的两个参数。

“此操作”仅表示BiConsumer实例所代表的操作。

因此在上面的示例中,foo 的“此操作”仅表示“System.out.println(a + b);”。

文档说,如果您调用 accept,将执行实例表示的操作(对于 foo,它是 System.out.println(a + b);)。

要在上述场景之上添加,BiConsumer 还有一种 in-built 用法:

ForEach map

的默认方法

在 Java-8

中引入