如何解决如何在Java中使用Lambda填充二维数组
我正在尝试创建double
的简单二维数组。
使用for
循环让它看起来并不重要:
static public double[][] genMatrix(int n) {
double mat[][]=new double[n][n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
mat[i][j]=generateDouble();
return mat;
}
我想使用lambda表达式和forEach
使其更平滑,但是我得到的数组中充满了零。为什么?
private static double[][] genSquareMatrix(int matrixDimension) {
double matrix[][] = new double[matrixDimension][matrixDimension];
Arrays.stream(matrix).forEach(x->Arrays.stream(x).forEach(y-> y = generateDouble()));
return matrix;
}
顺便说一句,当我使用lambda打印该数组时,没有问题。
解决方法
实际上是功能性的。对流的操作会产生结果,但不会修改其源。例如,对从集合中获取的Stream进行过滤会生成一个不带过滤元素的新Stream,而不是从源集合中删除元素。
它返回一个DoubleStream
,它支持
顺序和并行聚合操作
这就是为什么它不起作用的原因。
编辑:第一部分不正确。替换为更正确的版本
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。