Мне нужно получить длину 2D-массива как для строки, так и для столбца. Я успешно сделал это, используя следующий код:
public class MyClass {
public static void main(String args[])
{
int[][] test;
test = new int[5][10];
int row = test.length;
int col = test[0].length;
System.out.println(row);
System.out.println(col);
}
}
Как и ожидалось, это распечатает 5, 10.
Теперь взгляните на эту строку:
int col = test[0].length;
Обратите внимание, что мне действительно нужно ссылаться на конкретную строку, чтобы получить длину столбца. Мне это кажется невероятно некрасивым. Кроме того, если массив был определен как:
test = new int[0][10];
Тогда код не удастся получить длину. Есть ли другой (более разумный) способ сделать это?
java
arrays
multidimensional-array
user432209
источник
источник
Ответы:
Рассматривать
Длина столбца зависит от строки. Если вы подкрепляете некоторые данные двумерным массивом фиксированного размера, предоставьте методы получения фиксированных значений в классе-оболочке.
источник
2D-массив - это не прямоугольная сетка. Или, может быть, лучше, в Java нет такой вещи, как 2D-массив.
Выходы
Массивы
test
иtest2
(более или менее) совпадают.источник
Было действительно трудно вспомнить, что
Давайте разберемся, почему это так и как мы можем это понять, когда нам задают проблему с массивом. Из приведенного ниже кода мы видим, что строки = 4 и столбцы = 3:
arr
содержит несколько массивов, и эти массивы могут быть расположены вертикально, чтобы получить количество столбцов. Чтобы получить количество строк, нам нужно получить доступ к первому массиву и рассмотреть его длину. В этом случае мы обращаемся к [1, 1, 1, 1] и, таким образом, количество строк = 4. Когда возникает проблема, когда вы не видите массив, вы можете визуализировать массив в виде прямоугольника с n X m размеров и делаем вывод, что мы можем получить количество строк, обращаясь к первому массиву, а затем к его длине. Другой (arr.length
) предназначен для столбцов.источник
Java позволяет создавать «рваные массивы», где каждая «строка» имеет разную длину. Если вы знаете, что у вас есть квадратный массив, вы можете использовать свой код, модифицированный для защиты от пустого массива, например:
источник
Если у вас есть этот массив:
Ты можешь сделать это:
= 2
= 2
= 2
= 3
= 4
источник
На уровне языка нет более чистого способа, потому что не все многомерные массивы являются прямоугольными. Иногда необходимы массивы с зазубринами (разной длины столбцов).
Вы можете легко создать свой собственный класс, чтобы абстрагироваться от необходимой вам функциональности.
Если вы не ограничены массивами, возможно, некоторые из различных классов коллекций также будут работать, например Multimap .
источник
.length = количество строк / длина столбца
[0] .length = количество столбцов / длина строки
источник
Попробуйте следующую программу для 2d-массива на java:
источник
источник
С
Java 8
, вы можете сделать что-то более элегантное, например:источник
источник