Java中的多维数组长度

Bry*_*ton 27 java arrays multidimensional-array

如何找到具有非相等索引的多维数组的长度?

例如,我有 int[][] pathList = new int[6][4]

如果没有对索引进行硬编码,我需要找到'6'和'4'.

我可以找到6 pathList.length,但如何获得'4'?

no.*_*ing 60

这将为您提供索引处数组的长度 i

pathList[i].length
Run Code Online (Sandbox Code Playgroud)

值得注意的是,与C或C++不同,Java中二维数组元素的长度不必相等.例如,当pathList实例化等于时new int[6][],它可以容纳6个int []实例,每个实例可以是不同的长度.


因此,当您按照问题中显示的方式创建数组时,您也可以这样做

 pathList[0].length
Run Code Online (Sandbox Code Playgroud)

因为你知道他们都有相同的长度.在其他情况下,你需要定义,具体到究竟你的应用是什么第二个维度的长度是指-这可能是最大长度的所有元素,或者是最低的.在大多数情况下,您需要迭代所有元素并阅读它们的长度来做出决定:

for(int i = 0; i < pathList.length; i++)
{
    int currLen = pathList[i].length;
}
Run Code Online (Sandbox Code Playgroud)


Sid*_*ril 11

这是一个三维数组.

 int x[][][]=new int[5][8][10];
        System.out.println(x.length+" "+x[1].length+" "+x[0][1].length);
Run Code Online (Sandbox Code Playgroud)

输出:5 8 10


Nat*_*yan 8

Java具有"锯齿状"多维数组,这意味着二维数组中的每个"行"可以具有不同数量的组件.如果您可以假设每行具有相同数量的组件,请使用:

pathList[0].length;
Run Code Online (Sandbox Code Playgroud)

否则,您将不得不迭代:

int maxRowLength = 0;
for (int i = 0; i < pathList.length; i++) {
    if (maxRowLength < pathList[i].length) {
        maxRowLength = pathList[i].length;
    }
}
Run Code Online (Sandbox Code Playgroud)