如何使用java Lambdas获得数组的产品。我知道C#它是这样的:使用java获取产品列表Lambdas
result = array.Aggregate((a, b) => b * a);
编辑:作出这个问题更加清晰。
如何使用java Lambdas获得数组的产品。我知道C#它是这样的:使用java获取产品列表Lambdas
result = array.Aggregate((a, b) => b * a);
编辑:作出这个问题更加清晰。
你提到的两个数组和列表,所以这里是你会怎么做两个:
Integer intProduct = list.stream().reduce(1, (a, b) -> a * b);
Integer intProduct = Arrays.stream(array).reduce(1, (a, b) -> a * b); // Integer[]
int intProduct = Arrays.stream(array).reduce(1, (a, b) -> a * b); // int[]
版本是否如果列表/阵列可能是空的一个缺点:第一个参数, 1
在这种情况下,如果列表或数组是空的,所以如果你不希望这样的行为,有一个版本,将返回Optional<Integer>
,OptionalInt等:
Optional<Integer> intProduct = list.stream().reduce((a, b) -> a * b);
Optional<Integer> intProduct = Arrays.stream(array).reduce((a, b) -> a * b); // Integer[]
OptionalInt intProduct = Arrays.stream(array).reduce((a, b) -> a * b); // int[]
将被作为结果返回这操作上被称为“减少”。这里的教程:https://docs.oracle.com/javase/tutorial/collections/streams/reduction.html – dnault