Почему я не могу получить одномерный массив столбца так же просто, как строки? - PullRequest
0 голосов
/ 16 мая 2018

Фон

Это двумерный массив .-

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

Я могу получить доступ к строкам, вызвав это: names[n] Где n - любое целое число междуграницы и в этом случае 0 <= <code>n <= names.length-1 </strong>. Аналогично Я могу назвать это String [] rowOne = names[0];


Запрос

Теперь вместо строк остается вопрос, есть ли способ получить доступ к конкретномуТочно так же, как столбец , осуществляется доступ к определенной строке * .


Отзыв

Я хотел бы получить отзыв об этом предложении.В конкретном случае доступа к столбцу в массиве 2d , names[][x] будет объявлением для вызова определенного столбца, где 0 <= <code>x <= names [0] .length-1 </strong>.

String[] columnOne = names[][0]

Это будет означать, что names.length будет эквивалент для вызова names[][x].length

Это можеттакже работает для массивов больше , чем 2d массив .

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

Просто добавьте дополнительные квадратные скобки.

Например, В трехмерном массиве для доступа к проходу , что я и буду называть 3-е измерение .names[][][z], где 0 <= <code>z <= names [0] [1] .length-1 </strong>

одномерные массивы из многомерных массивов.

1 Ответ

0 голосов
/ 16 мая 2018

... есть ли способ доступа к определенному столбцу таким же образом, как к определенной строке.

Нет; Многомерные массивы Java - это, по сути, массивы, которые содержат ссылки на другие массивы, не смежные в памяти. Java также позволяет создавать неровности массивов. Допустим, у вас есть следующий многомерный массив:

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

Позвонив по номеру array[][2], что вы ожидаете получить? А как насчет array[][3]?

Чтобы получить массив столбцов, вам необходимо сначала перенести многомерный массив.

...