为什么我不能将列的一维数组变得像行一样简单?

时间:2018-05-16 00:40:22

标签: java arrays multidimensional-array syntax

背景

这是一个二维数组.-

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

我可以通过调用以下方式访问行: names[n] 其中n是边界之间的任何整数,在这种情况下 0 <= n&lt; = names.length-1 同样地 我可以称之为 String [] rowOne = names[0];

询问

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

反馈

我想对此建议提出反馈意见。 在访问 2d数组中的列的特定情况下,names[][x]将是调用特定列的声明,其中 0&lt; = x&lt; =名称[0]。长度-1

String[] columnOne = names[][0]

这意味着names.length 等同于来调用names[][x].length

这也适用于阵列更高而不是 2d数组

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

只需添加额外的方括号。

例如在3d数组中,要访问过道,我将参考第三维names[][][z],其中 0&lt; = z&lt; = names [0] [1] .length-1

来自多维数组的一维数组。

1 个答案:

答案 0 :(得分:0)

  

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

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

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

致电array[][2],您会收到什么?那么array[][3]呢?

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