Diferentes formas de declarar e inicializar array 2-D en Java

Una array con más de una dimensión se conoce como array multidimensional . Las arrays multidimensionales más utilizadas son las arrays 2D y 3D. Podemos decir que cualquier array de mayor dimensión es básicamente una array de arrays. Un ejemplo muy común de una array 2D es el tablero de ajedrez. Un tablero de ajedrez es una cuadrícula que contiene 64 casillas cuadradas de 1×1. De manera similar, puede visualizar una array 2D. En una array 2D, cada elemento está asociado con un número de fila y un número de columna. Acceder a cualquier elemento de la array 2D es similar a acceder al registro de un archivo de Excel utilizando tanto el número de fila como el número de columna. Las arrays 2D son útiles al implementar un juego de tres en raya, ajedrez o incluso almacenar los píxeles de la imagen. 

Declaración de la array 2-D en Java:

Cualquier array bidimensional se puede declarar de la siguiente manera:

Sintaxis:

data_type array_name[][];   (OR)     data_type[][] array_name;
  • data_type: Dado que Java es un lenguaje de tipo estático (es decir, espera que sus variables se declaren antes de que se les puedan asignar valores). Entonces, especificar el tipo de datos decide el tipo de elementos que aceptará. por ejemplo, para almacenar valores enteros únicamente, el tipo de datos se declarará como int.
  • array_name: Es el nombre que se le da a la array 2-D. ej. asignaturas, alumnos, frutas, departamento, etc.

Nota: Podemos escribir [ ][ ] después de tipo_datos o podemos escribir [ ][ ] después de nombre_arreglo al declarar el arreglo 2D.

Java

// java program showing declaration of arrays
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
 
        int[][] integer2DArray; // 2D integer array
        String[][] string2DArray; // 2D String array
        double[][] double2DArray; // 2D double array
        boolean[][] boolean2DArray; // 2D boolean array
        float[][] float2DArray; // 2D float array
        double[][] double2DArray; // 2D double array
    }
}

Inicialización de array 2-D en Java:

data_type[][] array_Name = new data_type[no_of_rows][no_of_columns];

El total de elementos en cualquier array 2D será igual a (no_of_rows) * (no_of_columns).

  • no_of_rows: el número de filas en una array. por ejemplo, no_of_rows = 3, entonces la array tendrá tres filas.
  • no_of_columns: El número de columnas en una array. por ejemplo, no_of_columns = 4, entonces la array tendrá cuatro columnas.

La sintaxis anterior de inicialización de arrays asignará valores predeterminados a todos los elementos de la array de acuerdo con el tipo de datos especificado. 
Veamos varios enfoques para inicializar arreglos 2D:

Enfoque 1:

Java

// java program to initialize a 2D array
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        // Declaration along with initialization
        // 2D integer array with 5 rows and 3 columns
        // integer array elements are initialized with 0
        int[][] integer2DArray = new int[5][3];
        System.out.println(
            "Default value of int array element: "
            + integer2DArray[0][0]);
 
        // 2D String array with 4 rows and 4 columns
        // String array elements are initialized with null
        String[][] string2DArray = new String[4][4];
        System.out.println(
            "Default value of String array element: "
            + string2DArray[0][0]);
 
        // 2D boolean array with 3 rows and 5 columns
        // boolean array elements are initialized with false
        boolean[][] boolean2DArray = new boolean[4][4];
        System.out.println(
            "Default value of boolean array element: "
            + boolean2DArray[0][0]);
 
        // 2D char array with 10 rows and 10 columns
        // char array elements are initialized with
        // '\u0000'(null character)
        char[][] char2DArray = new char[10][10];
        System.out.println(
            "Default value of char array element: "
            + char2DArray[0][0]);
 
        // First declaration and then initialization
        int[][] arr; // declaration
 
        // System.out.println("arr[0][0]: "+ arr[0][0]);
        // The above line will throw an error, as we have
        // only declared the 2D array, but not initialized
        // it.
        arr = new int[5][3]; // initialization
        System.out.println("arr[0][0]: " + arr[0][0]);
    }
}

Nota: Cuando inicializa una array 2D, siempre debe especificar la primera dimensión (cantidad de filas), pero se puede omitir proporcionar la segunda dimensión (cantidad de columnas).

En el fragmento de código a continuación, no hemos especificado el número de columnas. Sin embargo, el compilador de Java es lo suficientemente inteligente como para manipular el tamaño comprobando el número de elementos dentro de las columnas.

Java

import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        // The line below will throw an error, as the first
        // dimension(no. of rows) is not specified
        int[][] arr = new int[][3];
 
        // The line below will execute without any error, as
        // the first dimension(no. of rows) is specified
        int[][] arr = new int[2][];
    }
}

Puede acceder a cualquier elemento de una array 2D usando números de fila y números de columna.

Enfoque 2:

En el fragmento de código a continuación, no hemos especificado el número de filas y columnas. Sin embargo, el compilador de Java es lo suficientemente inteligente como para manipular el tamaño comprobando el número de elementos dentro de las filas y columnas.

Java

import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        String[][] subjects = {
            { "Data Structures & Algorithms",
              "Programming & Logic", "Software Engineering",
              "Theory of Computation" },                       // row 1
 
            { "Thermodynamics", "Metallurgy",
              "Machine Drawing",
              "Fluid Mechanics" },                             // row2
 
            { "Signals and Systems", "Digital Electronics",
              "Power Electronics" }                            // row3
        };
 
        System.out.println(
            "Fundamental Subject in Computer Engineering: "
            + subjects[0][0]);
        System.out.println(
            "Fundamental Subject in Mechanical Engineering: "
            + subjects[1][3]);
        System.out.println(
            "Fundamental Subject in Electronics Engineering: "
            + subjects[2][1]);
    }
}

Enfoque 3:

Además, podemos inicializar cada elemento de la array por separado. Mira el fragmento de código a continuación:

Java

import java.io.*;
import java.util.*;
 
class GFG {
    public static void main(String[] args)
    {
        int[][] scores = new int[2][2];
        // Initializing array element at position[0][0],
        // i.e. 0th row and 0th column
        scores[0][0] = 15;
        // Initializing array element at position[0][1],
        // i.e. 0th row and 1st column
        scores[0][1] = 23;
        // Initializing array element at position[1][0],
        // i.e. 1st row and 0th column
        scores[1][0] = 30;
        // Initializing array element at position[1][1],
        // i.e. 1st row and 1st column
        scores[1][1] = 21;
 
        // printing the array elements individually
        System.out.println("scores[0][0] = "
                           + scores[0][0]);
        System.out.println("scores[0][1] = "
                           + scores[0][1]);
        System.out.println("scores[1][0] = "
                           + scores[1][0]);
        System.out.println("scores[1][1] = "
                           + scores[1][1]);
        // printing 2D array using Arrays.deepToString() method
        System.out.println(
            "Printing 2D array using Arrays.deepToString() method: ");
        System.out.println(Arrays.deepToString(scores));
    }
}

Enfoque 4

Usar el enfoque anterior para la inicialización de arrays sería una tarea tediosa si el tamaño de la array 2D es demasiado grande. La forma eficiente es usar for loop para inicializar los elementos de la array en el caso de una gran array 2D. 

Java

import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        int rows = 80, columns = 5;
        int[][] marks = new int[rows][columns];
 
        // initializing the array elements using for loop
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                marks[i][j] = i + j;
            }
        }
 
        // printing the first three rows of marks array
        System.out.println("First three rows are: ");
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < columns; j++) {
                System.out.printf(marks[i][j] + " ");
            }
            System.out.println();
        }       
    }
}

Podemos usar arr. length se puede usar para encontrar el tamaño de las filas (primera dimensión), y arr[0].length se puede usar para encontrar el tamaño de las columnas (segunda dimensión).

Enfoque 5: (arrays irregulares)

Puede haber un escenario determinado en el que desee que cada fila tenga un número diferente de columnas. Este tipo de arreglo se llama arreglo irregular .

Java

import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        // declaring a 2D array with 2 rows
        int jagged[][] = new int[2][];
 
        // not specifying the 2nd dimension,
        // and making it as jagged array
        // first row has 2 columns
        jagged[0] = new int[2];
        // second row has 2 columns
        jagged[1] = new int[4];
        // Initializing the array
        int count = 0;
        for (int i = 0; i < jagged.length; i++) {
            // remember to use jagged[i].length instead of
            // jagged[0].length, since every row has
            // different number of columns
            for (int j = 0; j < jagged[i].length; j++) {
                jagged[i][j] = count++;
            }
        }
 
        // printing the values of 2D Jagged array
        System.out.println("The values of 2D jagged array");
        for (int i = 0; i < jagged.length; i++) {
            for (int j = 0; j < jagged[i].length; j++)
                System.out.printf(jagged[i][j] + " ");
            System.out.println();
        }
    }
}

Implementación:
Veamos un programa simple para agregar dos arreglos 2D:

Java

import java.io.*;
import java.util.*;
 
class GFG {
    public static void main(String[] args)
    {
        int[][] arr1 = { { 1, 2, 3 }, { 4, 5, 6 } };
        int[][] arr2 = { { 4, 5, 6 }, { 1, 3, 2 } };
        int[][] sum = new int[2][3];
 
        // adding two 2D arrays element-wise
        for (int i = 0; i < arr1.length; i++) {
            for (int j = 0; j < arr1[0].length; j++) {
                sum[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
         
        System.out.println("Resultant 2D array: ");
        for (int i = 0; i < sum.length; i++) {
            System.out.println(Arrays.toString(sum[i]));
        }
    }
}

Publicación traducida automáticamente

Artículo escrito por girishthatte y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *