首页 > 解决方案 > 为什么我不能像行一样简单地获得一维数组?

问题描述

背景

这是一个二维数组。-

String[][] names = { {"Sam", "Smith"}, {"Robert", "Delgro"}, {"James", "Gosling"}, };

我可以通过调用来访问这些行: names[n] 其中 n 是边界之间的任何整数,在本例中为 0<= n<=names.length-1同样 ,我可以称之为 String [] rowOne = names[0];


询问

现在的问题仍然是,而不是行,是否有一种方法可以像访问特定行一样访问特定列。


反馈

我想对此建议提供反馈。在访问2d array中的列的特定情况下,names[][x]将声明调用特定列,其中0<= x<=names[0].length-1

String[] columnOne = names[][0]

这将意味着这names.length相当于调用names[][x].length

这也适用于大于2d 数组的数组。

String[][][]names = { {{"Sam", "Smith"}, {"Robert", "Delgro"}}, {{"James", "Gosling"}}};

只需添加额外的方括号。

例如,在 3d 数组中,要访问aisle,这就是我将引用的3rd dimensionnames[][][z], 其中0<= z<= names[0][1].length-1

一维数组来自多维数组。

标签: javaarraysmultidimensional-arraysyntax

解决方案


...有没有办法以与访问特定行相同的方式访问特定列。

不; Java 的多维数组本质上是包含对其他数组的引用的数组,这些数组在内存中并不连续。Java 还允许数组是锯齿状的。假设您有以下多维数组:

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

通过调用array[][2],您希望收到什么?怎么样array[][3]

为了能够获得一个列数组,您需要首先转置多维数组。


推荐阅读