Java 使用lambda在函数中传递两个参数
我对Java中的lambdas非常陌生 我已经开始使用它,因为我发现它们非常有趣 但我仍然不知道如何完全使用它们 我有一个uuid列表,对于每个uuid,我想调用一个函数,它包含两个参数:第一个是字符串,第二个是uuid 我为每个uuid传递一个常量字符串 我已经写了以下代码,但它不工作Java 使用lambda在函数中传递两个参数,java,lambda,java-stream,Java,Lambda,Java Stream,我对Java中的lambdas非常陌生 我已经开始使用它,因为我发现它们非常有趣 但我仍然不知道如何完全使用它们 我有一个uuid列表,对于每个uuid,我想调用一个函数,它包含两个参数:第一个是字符串,第二个是uuid 我为每个uuid传递一个常量字符串 我已经写了以下代码,但它不工作 uuids.stream() .map(uuid -> {"string",uuid}) .forEach(AService::Amethod); 方法是另一类服务 public v
uuids.stream()
.map(uuid -> {"string",uuid})
.forEach(AService::Amethod);
方法是另一类服务
public void Amethod(String a, UUID b) {
System.out.println(a+b.toString());
}
lambda表达式只有一个返回值,因此
{“string”,uuid}
不起作用
您可以使用.map(uuid->newobject[]{“string”,uuid})
返回一个数组,但是AService::Amethod
方法引用不接受该数组
在您的示例中,您可以跳过map
步骤:
uuids.stream()
.forEach(uuid -> aservice.Amethod("string",uuid));
其中,aservice
是希望对其执行Amethod
方法的aservice
类的实例
uuids.stream().forEach(uuid -> AService.Amethod("string", uuid));
在给定对类的情况下,您可以编写更接近当前代码的代码,但1)您最终会得到更复杂的代码;2) Java标准库没有内置的。由于2),有相当多的实用程序库定义了一个。例如,如果有,它将是
uuids.stream()
.map(uuid -> Pair.of("string",uuid))
.forEach(pair -> AService.Amethod(pair.getLeft(), pair.getRight()));
可能重复的