【发布时间】:2018-08-27 23:55:03
【问题描述】:
在 Java 8 版本之前,我们可以使用如下的 for 循环来初始化一个二维数组。如何使用 lambda 表达式在 JDK 1.8 中执行以下操作?
int[][] board = new int[3][3];
int v = 1;
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < 3; j++) {
board[i][j] = v;
v++;
System.out.println(v);
}
}
System.out.println(Arrays.deepToString(board));
基本上,我正在寻找一个像下面这样的数组
[[1,6],[2,7],[3,8],[4,9]]
【问题讨论】:
-
int[][] board = IntStream.range(0, 3).mapToObj(i -> IntStream.range(0, 3).map(j -> i * 3 + j + 1).toArray()).toArray(int[][]::new); -
谢谢@shmosel,我想要一个如下的数组 [[1,6],[2,7],[3,8],[4,9]]
-
传统的
for循环具有更好的可读性和更高的效率,尤其是在处理原始类型时。我建议使用传统的for循环,除非您另有要求。 -
5是故意遗漏还是忘记了? -
您的循环不会产生这种情况。
标签: java arrays java-8 java-stream