代码之家  ›  专栏  ›  技术社区  ›  DCR

Java 8语法难以理解

  •  1
  • DCR  · 技术社区  · 7 年前

    有人回答了一个问题,但我无法理解。

    我知道的第一个答案是:

    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)是否返回每行temp?

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

    然后下一行取1darray并将其放置为2darray?

    1 回复  |  直到 7 年前
        1
  •  2
  •   azro    7 年前

    整个过程需要 double[][] 并返回一个盒装副本 Double[][]


    arrays.stream(temp)是否返回每行temp?

    Arrays.stream(T[]) 返回给定数组中包含的元素序列。 temp 是一个数组 double[] 所以这条小溪 双[] (如果将其视为二维数组,则为“行”),在下一个操作中 d 双[]


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

    Arrays.stream(double[]) 返回 Stream 属于 double 价值观 double[] d (局部变量)。这些变量是 boxed Double 把它们放在一起 Double[]


    然后下一行取1darray并将其放置为2darray?

    那么所有这些 双[] 是为了建立一个 双[][]