我目前的代码如下:
double[][][] result = new double[1000][][];
for (int i = 0; i < result.length; i++){
result[i] = somemethod();
}
现在我想使用stream来做同样的事情。我做了很多研究,但找不到用第二维填充另一种方法的返回值的答案。
答案 0 :(得分:4)
对于您的任务,阵列的3D特性无关紧要。您可以将double[][]
替换为X
,并遵循与生成数组X[]
时相同的通用步骤:
X[] array = IntStream.range(0, size).mapToObj(i -> somemethod()).toArray(X[]::new);
使用double[][]
X
和1000
获取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());
在那种情况下。