Arrays.fill with multidimensional array in Java

2022-08-31 11:41:17

如何在不使用循环的情况下在Java中填充多维数组?我试过了:

double[][] arr = new double[20][4];
Arrays.fill(arr, 0);

这导致java.lang.ArrayStoreException: java.lang.Double


答案 1

这是因为 a 是您无法分配到的数组(就像执行操作一样)。事实上,Java没有真正的多维数组。double[][]double[]0.0double[] vector = 0.0

碰巧的是,0.0 是 Java 中双精度值的默认值,因此当您从 中获取矩阵时,矩阵实际上已经用零填充。但是,如果你想填充它,比如说,你可以执行以下操作:new1.0

我不相信API提供了一种不使用循环来解决这个问题的方法。然而,使用for-each循环来做到这一点非常简单。

double[][] matrix = new double[20][4];

// Fill each row with 1.0
for (double[] row: matrix)
    Arrays.fill(row, 1.0);

答案 2
double[][] arr = new double[20][4];
Arrays.fill(arr[0], 0);
Arrays.fill(arr[1], 0);
Arrays.fill(arr[2], 0);
Arrays.fill(arr[3], 0);
Arrays.fill(arr[4], 0);
Arrays.fill(arr[5], 0);
Arrays.fill(arr[6], 0);
Arrays.fill(arr[7], 0);
Arrays.fill(arr[8], 0);
Arrays.fill(arr[9], 0);
Arrays.fill(arr[10], 0);
Arrays.fill(arr[11], 0);
Arrays.fill(arr[12], 0);
Arrays.fill(arr[13], 0);
Arrays.fill(arr[14], 0);
Arrays.fill(arr[15], 0);
Arrays.fill(arr[16], 0);
Arrays.fill(arr[17], 0);
Arrays.fill(arr[18], 0);
Arrays.fill(arr[19], 0);