Java 8语法难以理解

时间:2018-07-10 23:49:14

标签: java java-8

有人回答了一个我无法理解的答案。

我了解的第一个答案是:

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?

1 个答案:

答案 0 :(得分:2)

这所有过程都需要一个double[][]并返回一个装箱的副本Double[][]


  

Arrays.stream(temp)是否返回温度的每一行?

Arrays.stream(T[])返回给定数组中包含的元素的序列。 tempdouble[]的数组,因此在下一个操作double[]中,流将是d(因此,如果您将其视为2D数组,则为“行”)。将为double[]


  

然后,下一行地图是否将行中的每个元素转换为对象并将其放置在1d数组中?

Arrays.stream(double[])返回Stream个值的double,即double[] d(局部变量)的值。这些变量是boxedDouble,并放在一起构成Double[]


  

然后下一行采用1darray并将其放置为2darray吗?

然后将所有这些Double[]放在一起以构建Double[][]