Java - 创建一个与另一个2D数组相同大小的数组

6

I have the following 2D Array:

     int[][] matrixA = { {1, 2 ,3}, {4, 5, 6} };

我想创建另一个与matrixA相同大小的二维数组,我的问题是如何像普通数组一样做到这一点,即:int[] arrayA = {10, 12, 33, 23}, int[] arrayB = new int[arrayA.length]

    int[][] matrixB = new int[matrixA.length][]

我可以这样做吗,只分配一个具有两个位置的数组,并让剩下的位置由for循环填充?还是有更正确和灵活的方法来做到这一点?

2
看看这个:https://dev59.com/WGct5IYBdhLWcg3wPbMm - cosh
1个回答

7
为什么不使用普通的多维数组初始化语法?
    int[][] a = {{1,2,3}, {4,5,6}};
    int[][] b = new int[a.length][a[0].length];

这似乎完美地运作了。这里有一个小循环,测试所有的条目是否确实存在,并且我们不会收到任何 AIOOBEs:

    for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < a[0].length; j++) {
          b[i][j] = a[i][j];
        }
    }

这显然假定你正在处理矩形矩阵,也就是说,所有的行必须具有相同的尺寸。如果你有一些奇怪的不规则数组,你必须使用循环来单独初始化每一行。

嗯,我明白了...但是在编程方面,[a[0].length]代表什么?我只是想完全理解它,而不是简单地复制粘贴。谢谢! - ramireeez
1
a 是一个二维数组。如果按行主序格式思考,a[0] 就是第一行。a[0].length 是第一行的维度,也就是矩阵的宽度。a.length 则是矩阵的高度。在 Java 中初始化二维数组的常规方式是 new MyType[h][w]。好吧,“常规”只是在那些罕见的情况下才会在 Java 中初始化数组(因为集合,现在还有流 API 更加方便使用)。 - Andrey Tyukin
好的,比如说,如果我想交换a[]中的列和行以初始化b[],应该像这样写:int[][] b = new int[a[0].length][a.length] - ramireeez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接