如何使用java Lambdas获取数组的产品。我在C#中知道它是这样的:
result = array.Aggregate((a, b) => b * a);
编辑:让问题更清晰。
答案 0 :(得分:4)
list.stream().reduce(1, (a, b) -> a * b);
答案 1 :(得分:0)
你提到了数组和列表,所以这里是你如何做到这两点:
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[]