Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用lambda在函数中传递两个参数_Java_Lambda_Java Stream - Fatal编程技术网

Java 使用lambda在函数中传递两个参数

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

我对Java中的lambdas非常陌生

我已经开始使用它,因为我发现它们非常有趣 但我仍然不知道如何完全使用它们

我有一个uuid列表,对于每个uuid,我想调用一个函数,它包含两个参数:第一个是字符串,第二个是uuid

我为每个uuid传递一个常量字符串

我已经写了以下代码,但它不工作

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()));
可能重复的