我正尝试在Java8中实现Java.stream()方法来对数字列表进行多重运算。我已经导入了java.util.stream*;包。静态方法被设置为返回一个int并接受一个数组。但是,当我在数组上调用.stream().reduce()时,我得到错误:
error: cannot find symbol
int count = x.stream().reduce(1, (a, b) -> a * b).sum();
^
symbol: method stream()
location: variable x of type int[]
如何正确使用stream()方法将数组的值按顺序相乘?
我定义的类是:
import java.util.stream.*;
public class Kata{
public static int grow(int[] x){
int count = x.stream().reduce(1, (a, b) -> a * b).sum();
return count;
}
}
发布于 2018-09-21 11:23:31
您需要使用Arrays.stream
将数组转换为流:
int count = Arrays.stream(x).reduce(1, (a, b) -> a * b);
您在最后执行的sum()
步骤没有任何意义,因为在执行reduce
之后,我们只剩下一个原始整数。所以我把它移走了。
发布于 2018-09-21 11:25:37
首先将数组转换为List
进行流式传输,或者也可以使用Arrays.stream(x)
@Tim Biegeleisen suggestion
Arrays.asList(x).stream(x).reduce(1, (a, b) -> a * b);
https://stackoverflow.com/questions/52436120
复制相似问题