在java中用流填充3d数组

时间:2017-06-26 15:52:28

标签: arrays java-8 java-stream

我目前的代码如下:

double[][][] result = new double[1000][][];
for (int i = 0; i < result.length; i++){
   result[i] = somemethod();
}

现在我想使用stream来做同样的事情。我做了很多研究,但找不到用第二维填充另一种方法的返回值的答案。

1 个答案:

答案 0 :(得分:4)

对于您的任务,阵列的3D特性无关紧要。您可以将double[][]替换为X,并遵循与生成数组X[]时相同的通用步骤:

X[] array = IntStream.range(0, size).mapToObj(i -> somemethod()).toArray(X[]::new);

使用double[][] X1000获取size收益:

double[][][] result
    = IntStream.range(0, 1000).mapToObj(i -> somemethod()).toArray(double[][][]::new);

如果somemethod()价格昂贵,但没有干扰(因此多个并发呼叫是安全的),您可以对流使用.parallel()。你也可以使用

double[][][] result = new double[1000][][];
Arrays.parallelSetAll(args, i -> somemethod());

在那种情况下。