微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Java中使用Lambda填充二维数组

如何解决如何在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打印该数组时,没有问题。

解决方法

关于documentation

实际上是功能性的。对流的操作会产生结果,但不会修改其源。例如,对从集合中获取的Stream进行过滤会生成一个不带过滤元素的新Stream,而不是从源集合中删除元素。

它返回一个DoubleStream,它支持

顺序和并行聚合操作

这就是为什么它不起作用的原因。

编辑:第一部分不正确。替换为更正确的版本

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。