Colecciones multidimensionales en Java

En Java, tenemos un marco de colección que proporciona funcionalidad para almacenar un grupo de objetos. Esto se llama ArrayList unidimensional donde solo podemos tener un elemento en una fila. Geek, pero qué pasa si queremos hacer un ArrayList multidimensional, para esta funcionalidad tenemos colecciones multidimensionales (o colecciones anidadas) en Java. 

Colecciones multidimensionales (o colecciones anidadas) es una colección de grupos de objetos donde cada grupo puede tener cualquier número de objetos dinámicamente. Por lo tanto, aquí podemos almacenar cualquier número de elementos en un grupo cuando queramos.

Multidimensional_Collections_in_Java

Ilustración:

Single dimensional ArrayList :
  [121, 432, 12, 56, 456, 3, 1023]
  [Apple, Orange, Pear, Mango]

Sintaxis:  

ArrayList <Object> x = new ArrayList <Object>();

Necesidad de colecciones multidimensionales

A diferencia de los arreglos, no estamos sujetos al tamaño de ninguna fila en las colecciones multidimensionales. Por lo tanto, si queremos usar una arquitectura multidimensional en la que podamos crear cualquier cantidad de objetos dinámicamente en una fila, entonces debemos optar por colecciones multidimensionales en Java.

Sintaxis : Colecciones multidimensionales

ArrayList<ArrayList<Object>> a = new ArrayList<ArrayList<Object>>();

Ilustración: 

Multidimensional ArrayList: [[3, 4], [12, 13, 14, 15], [22, 23, 24], [33]]

 Veamos rápidamente el método add() para ArrayList multidimensional, que es el siguiente:

  • boolean add( ArrayList<Object> e) : Se utiliza para insertar elementos en la colección especificada.
  • void add( int index, ArrayList<Object> e) : Se utiliza para insertar los elementos en la posición especificada en una Colección.

Ejemplo 1:

Java

// Java Program to Illustrate Multidimensional ArrayList
 
// Importing required classes
import java.util.*;
 
// Main class
// MultidimensionalArrayList
class GFG {
 
    // Method 1
    // To create and return 2D ArrayList
    static List create2DArrayList()
    {
 
        // Creating a 2D ArrayList of Integer type
        ArrayList<ArrayList<Integer> > x
            = new ArrayList<ArrayList<Integer> >();
 
        // One space allocated for R0
        x.add(new ArrayList<Integer>());
 
        // Adding 3 to R0 created above x(R0, C0)
        x.get(0).add(0, 3);
 
        // Creating R1 and adding values
        // Note: Another way for adding values in 2D
        // collections
        x.add(
            new ArrayList<Integer>(Arrays.asList(3, 4, 6)));
 
        // Adding 366 to x(R1, C0)
        x.get(1).add(0, 366);
 
        // Adding 576 to x(R1, C4)
        x.get(1).add(4, 576);
 
        // Now, adding values to R2
        x.add(2, new ArrayList<>(Arrays.asList(3, 84)));
 
        // Adding values to R3
        x.add(new ArrayList<Integer>(
            Arrays.asList(83, 6684, 776)));
 
        // Adding values to R4
        x.add(new ArrayList<>(Arrays.asList(8)));
 
        // Appending values to R4
        x.get(4).addAll(Arrays.asList(9, 10, 11));
 
        // Appending values to R1, but start appending from
        // C3
        x.get(1).addAll(3, Arrays.asList(22, 1000));
 
        // This method will return 2D array
        return x;
    }
 
    // Method 2
    // Main driver method
    public static void main(String args[])
    {
        // Display message prior for better readability
        System.out.println("2D ArrayList :");
 
        // Printing 2D ArrayList by calling Method 1
        System.out.println(create2DArrayList());
    }
}
Producción

2D ArrayList :
[[3], [366, 3, 4, 22, 1000, 6, 576], [3, 84], [83, 6684, 776], [8, 9, 10, 11]]

 Ahora veamos la misma implementación de LinkedHashSet multidimensional y para mostrar cómo se comporta de manera diferente. De manera similar, podemos implementar cualquier otra Colección como Colección Multidimensional como se muestra a continuación: 

Sintaxis: 

HashSet< HashSet<Object> > a = new HashSet< HashSet<Object> >(); 

Nota: la clase LinkedHashSet contiene elementos únicos y mantiene el orden de inserción. Por lo tanto, en Multidimensional LinkedHashSet, la singularidad también se mantendrá dentro de las filas.

Ejemplo 2:

Java

// Java Program to Illustrate Multidimensional LinkedHashSet
 
// Importing required classes
import java.util.*;
 
// Main class
// Multidimensional LinkedHashSet
class GFG {
 
    // Method 1
    // To create and return 2D LinkedHashSet
    static Set create2DLinkedHashSet()
    {
        // Creating an empty 2D LinkedHashSet
        LinkedHashSet<LinkedHashSet<String> > x
            = new LinkedHashSet<LinkedHashSet<String> >();
 
        // Creating R0
        x.add(new LinkedHashSet<String>(
            Arrays.asList("Apple", "Orange")));
 
        // Creating R1, here "Coffee" will be considered as
        // only one object to maintain uniqueness
        x.add(new LinkedHashSet<String>(Arrays.asList(
            "Tea", "Coffee", "Milk", "Coffee", "Water")));
 
        // Creating R2
        x.add(new LinkedHashSet<String>(
            Arrays.asList("Tomato", "Potato", "Onion")));
 
        // Creating R3 but it will not be added as it
        // contains the same items as R2
 
        // Note: LinkedHashSet inserts only unique items
 
        x.add(new LinkedHashSet<String>(
            Arrays.asList("Tomato", "Potato", "Onion")));
 
        // Returning multidimensional LinkedHashSet
        return x;
    }
 
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
        // Display message for better readability
        System.out.println("2D LinkedHashSet :");
 
        // Printing 2D LinkedHashSet by
        // calling method 1
        System.out.println(create2DLinkedHashSet());
    }
}
Producción

2D LinkedHashSet :
[[Apple, Orange], [Tea, Coffee, Milk, Water], [Tomato, Potato, Onion]]

Publicación traducida automáticamente

Artículo escrito por Sagar_Gupta 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 *