繁体   English   中英

使用 java Lambdas 获取列表的乘积

[英]Get the product of a list using java Lambdas

如何使用 java Lambdas 获取数组的乘积。 我知道在 C# 中它是这样的:

result = array.Aggregate((a, b) => b * a);

编辑:使问题更清楚。

list.stream().reduce(1, (a, b) -> a * b);

你提到了数组和列表,所以这里是你如何为两者做的:

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[] 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM