有人回答了一个我无法理解的答案。
我了解的第一个答案是:
Double[][] inverse = new Double[temp.length][temp[0].length];
for (int i = 0; i < temp.length; i++)
for (int j = 0; j < temp[0].length; j++)
inverse[i][j] = temp[i][j];
}
}
但是这个需要Java 8的答案让我感到困惑:
Double[][] inverse = Arrays.stream(temp)
.map(d -> Arrays.stream(d).boxed().toArray(Double[]::new))
.toArray(Double[][]::new);
Arrays.stream(temp)是否返回温度的每一行?
然后下一行地图将行中的每个元素转换为对象并将其放置在一个1d数组中>
然后下一行使用1darray并将其放置为2darray?
答案 0 :(得分:2)
这所有过程都需要一个double[][]
并返回一个装箱的副本Double[][]
Arrays.stream(temp)是否返回温度的每一行?
Arrays.stream(T[])
返回给定数组中包含的元素的序列。 temp
是double[]
的数组,因此在下一个操作double[]
中,流将是d
(因此,如果您将其视为2D数组,则为“行”)。将为double[]
然后,下一行地图是否将行中的每个元素转换为对象并将其放置在1d数组中?
Arrays.stream(double[])
返回Stream
个值的double
,即double[] d
(局部变量)的值。这些变量是boxed
至Double
,并放在一起构成Double[]
然后下一行采用1darray并将其放置为2darray吗?
然后将所有这些Double[]
放在一起以构建Double[][]