HOWTO · Java
Como obter o comprimento de uma array 2D em Java
O artigo introduz métodos para obter o comprimento de uma array 2D em Java
Nesta página
Para um array 2D de Java chamado arr, arr.length fornece o número de linhas. Em um array retangular, arr[0].length fornece o número de colunas de cada linha, desde que o array externo tenha uma primeira linha. Java representa um array 2D como um array cujos elementos são arrays de linha separados; por isso, um array irregular pode ter linhas com comprimentos diferentes.
Como arrays 2D de Java armazenam linhas e colunas
Uma declaração como int[][] values descreve um array externo de linhas int[]. O length do array externo conta as referências às linhas; ele não conta todos os números inteiros da matriz. Cada linha tem seu próprio length. Um array retangular é aquele em que todas as linhas têm o mesmo comprimento. Em um array irregular, os comprimentos das linhas podem variar.
length é um campo de todo array Java, não um método. Escreva values.length, sem parênteses. Para consultar uma linha específica, use values[rowIndex].length.
Obter as dimensões de um array 2D retangular
Use o length do array externo para obter o número de linhas. Se o array tiver pelo menos uma linha e todas tiverem o mesmo tamanho, o length da primeira linha será o número de colunas. Este exemplo completo imprime as duas dimensões:
Execute este exemplo:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
class Main {
public static void main(String[] args) {
int[][] scores = {
{8, 7, 9},
{6, 5, 8}
};
int rows = scores.length;
int columns = scores[0].length;
System.out.println("Rows: " + rows);
System.out.println("Columns: " + columns);
}
}
A saída mostra duas linhas e três colunas, correspondentes às dimensões de scores. Os rótulos exibidos no exemplo permanecem em inglês:
Rows: 2
Columns: 3
Obter o comprimento de cada linha em um array irregular
Um array irregular não tem um único número de colunas. Selecione uma linha para obter seu comprimento ou percorra o array externo para consultar todas as linhas. A condição do loop usa rows.length, enquanto rows[i].length informa o tamanho da linha selecionada:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
class Main {
public static void main(String[] args) {
int[][] rows = {
{4, 2},
{7, 1, 3},
{9}
};
System.out.println("Rows: " + rows.length);
for (int i = 0; i < rows.length; i++) {
System.out.println("Row " + i + " length: " + rows[i].length);
}
}
}
A saída informa o comprimento de cada linha. Se você precisar consultar apenas uma delas, use uma expressão como rows[1].length. Os rótulos exibidos no exemplo permanecem em inglês:
Rows: 3
Row 0 length: 2
Row 1 length: 3
Row 2 length: 1
Como lidar com linhas vazias ou nulas com segurança
Antes de ler arr[0].length, verifique se o array externo contém uma linha. Um array criado como new int[0][] não tem primeira linha; por isso, confira arr.length > 0 antes de usar o índice 0. Para acessar uma linha específica, primeiro verifique rowIndex >= 0 && rowIndex < arr.length; os índices de arrays em Java começam em zero, e o último índice válido é um a menos que arr.length. Em seguida, confirme que arr[rowIndex] não é null antes de consultar seu comprimento, pois acessar uma linha nula causa uma NullPointerException. Uma linha existente sem elementos é diferente: seu comprimento é 0 e pode ser consultado com segurança.
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
class Main {
public static void main(String[] args) {
int[][] arr = { {1, 2}, null, {} };
System.out.println("Rows: " + arr.length);
for (int i = 0; i < arr.length; i++) {
if (arr[i] == null) {
System.out.println("Row " + i + " is null");
} else {
System.out.println("Row " + i + " length: " + arr[i].length);
}
}
}
}
Este exemplo produz a saída a seguir. Os rótulos exibidos permanecem em inglês:
Rows: 3
Row 0 length: 2
Row 1 is null
Row 2 length: 0
A linha nula é identificada sem ser acessada, enquanto a linha alocada sem elementos tem comprimento zero. Se o próprio array externo também puder ser null, verifique arr != null antes de ler arr.length.