HOWTO · Java

Cómo obtener la longitud de un array 2D en Java

El artículo introduce métodos para obtener la longitud de un array 2D en Java

En esta página

Para un array 2D de Java llamado arr, arr.length indica el número de filas. En un array rectangular, arr[0].length indica el número de columnas de cada fila, siempre que el array externo tenga al menos una fila. Java representa un array 2D como un array cuyos elementos son arrays de filas independientes; por eso, un array irregular puede tener filas de distinta longitud.

Cómo almacenan las filas y columnas los arrays 2D en Java

Una declaración como int[][] values describe un array externo de filas int[]. El length del array externo cuenta las referencias a las filas; no cuenta todos los enteros de la cuadrícula. Cada fila tiene su propio length. Un array rectangular es aquel en el que todas las filas tienen la misma longitud. En un array irregular, la longitud puede variar de una fila a otra.

El miembro length es un campo de todos los arrays de Java, no un método. Se escribe values.length, sin paréntesis. Para consultar una fila concreta, usa values[rowIndex].length.

Obtener las dimensiones de un array 2D rectangular

Usa el length del array externo para obtener el número de filas. Si el array tiene al menos una fila y todas tienen el mismo tamaño, el length de la primera fila indica el número de columnas. Este ejemplo completo imprime ambas dimensiones. La etiqueta que aparece dentro del bloque de código permanece en inglés.

Ejecuta este ejemplo:

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);
    }
}

La salida muestra dos filas y tres columnas, que coinciden con las dimensiones de scores. Las etiquetas impresas permanecen en inglés, tal como aparecen en el ejemplo sin modificar.

Rows: 2
Columns: 3

Obtener la longitud de cada fila en un array irregular

Un array irregular no tiene un único número de columnas. Puedes seleccionar una fila para obtener su longitud o recorrer el array externo para consultar todas las filas. La condición del bucle usa rows.length, mientras que rows[i].length indica el tamaño de la fila seleccionada. Las etiquetas visibles en la salida permanecen en inglés porque el bloque no se modifica.

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);
        }
    }
}

La salida indica la longitud de cada fila. Si solo necesitas consultar una, usa una expresión como rows[1].length. Las etiquetas impresas permanecen en inglés, igual que en el ejemplo original.

Rows: 3
Row 0 length: 2
Row 1 length: 3
Row 2 length: 1

Gestionar de forma segura las filas vacías o nulas

Antes de leer arr[0].length, comprueba que el array externo contenga alguna fila. Un array creado como new int[0][] no tiene una primera fila, así que verifica arr.length > 0 antes de usar el índice 0. Para acceder a una fila solicitada, comprueba primero que rowIndex >= 0 && rowIndex < arr.length; los índices de los arrays de Java empiezan en cero y el último índice válido es uno menos que arr.length. Después, verifica que arr[rowIndex] no sea null antes de leer su longitud, porque intentar acceder a una fila nula provoca una NullPointerException. Una fila existente sin elementos es distinta: su longitud es 0 y se puede consultar sin problema.

El código y las etiquetas o salidas visibles de esta sección se mantienen en 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 ejemplo produce la siguiente salida. Las etiquetas que aparecen en ella permanecen en inglés, como en el bloque original.

Rows: 3
Row 0 length: 2
Row 1 is null
Row 2 length: 0

La fila nula se identifica sin intentar acceder a ella, mientras que la fila asignada sin elementos tiene longitud cero. Si el propio array externo podría ser null, comprueba arr != null antes de leer arr.length.