Cómo iterar sobre una lista 2D (lista de listas) en Java

Dada una lista 2D, la tarea es iterar esta lista 2D en Java.

Lista 2D (lista de listas)
La lista 2D se refiere a una lista de listas, es decir, cada fila de la lista es otra lista.

[
  [5, 10],
  [1], 
  [20, 30, 40]
] 

Iterar una lista 2D: hay dos formas de iterar sobre una lista de listas en Java.

  1. Iterando sobre la lista de listas usando loop:
    • Obtener la lista 2D a la iterada
    • Necesitamos dos bucles for-each para iterar la lista 2D con éxito.
    • En el primer ciclo for-each, cada fila de las listas 2D se tomará como una lista separada
      for (List list : listOfLists)
       { }
      
    • En el segundo bucle for-each, cada elemento de la lista en cada fila se tomará por separado
      for (K item : list)
       { }
      
    • Por lo tanto, podemos hacer cualquier operación en este elemento. Aquí estamos imprimiendo el artículo.

    A continuación se muestra la implementación del enfoque anterior:

    // Java code to demonstrate the concept of
    // list of lists using loop
      
    import java.util.*;
    public class List_of_list {
      
        // Iterate the 2D list using loop
        // and print each element
        public static <K> void
        iterateUsingForEach(List<List<K> > listOfLists)
        {
      
            // Iterate the 2D list
            // and print each element
            System.out.println("[");
      
            for (List<K> list : listOfLists) {
                System.out.print("  [");
      
                for (K item : list) {
                    System.out.print("  "
                                     + item
                                     + ", ");
                }
                System.out.println("], ");
            }
            System.out.println("]");
        }
      
        // Driver code
        public static void main(String[] args)
        {
      
            // List of Lists
            ArrayList<List<Integer> > listOfLists
                = new ArrayList<List<Integer> >();
      
            // Create N lists one by one
            // and append to the list of lists
            List<Integer> list1
                = new ArrayList<Integer>();
            list1.add(5);
            list1.add(10);
            listOfLists.add(list1);
      
            List<Integer> list2
                = new ArrayList<Integer>();
            list2.add(1);
            listOfLists.add(list2);
      
            List<Integer> list3
                = new ArrayList<Integer>();
            list3.add(20);
            list3.add(30);
            list3.add(40);
            listOfLists.add(list3);
      
            // Iterate the 2D list
            iterateUsingForEach(listOfLists);
        }
    }

    Producción:

    [
     [ 5,  10, ], 
     [ 1, ], 
     [ 20,  30,  40, ], 
    ]
    
  2. Iterando sobre la lista de listas usando iterador:
    • Obtener la lista 2D a la iterada
    • Necesitamos dos iteradores para iterar la lista 2D con éxito.
    • El primer iterador iterará cada fila de las listas 2D como una lista separada
      Iterator listOfListsIterator = listOfLists.iterator();
      
    • Cada fila de la lista 2D se puede obtener con la ayuda del método next() de Iterator
      listOfListsIterator.next();
      

      Pero el método next() devuelve el iterador como objeto de un objeto. Por lo tanto, debemos convertir este objeto devuelto en una lista.

      list = (List)listOfListsIterator.next();
      
    • El segundo iterador iterará cada elemento de la lista en cada fila por separado.
      Iterator eachListIterator = list.iterator();
      
    • Por lo tanto, podemos hacer cualquier operación en este elemento. Aquí estamos imprimiendo el artículo.

    A continuación se muestra la implementación del enfoque anterior:

    // Java code to demonstrate the concept of
    // list of lists using iterator
      
    import java.util.*;
      
    class List_of_list {
      
        // Iterate the 2D list using Iterator
        // and print each element
        public static <K> void
        iterateUsingIterator(List<List<K> > listOfLists)
        {
            // Iterator for the 2D list
            Iterator listOfListsIterator
                = listOfLists.iterator();
      
            System.out.println("[");
            while (listOfListsIterator.hasNext()) {
      
                // Type cast next() method
                // to convert from Object to List<K>
                List<K> list = new ArrayList<K>();
      
                list = (List<K>)listOfListsIterator.next();
      
                // Iterator for list
                Iterator eachListIterator
                    = list.iterator();
      
                System.out.print("  [");
                while (eachListIterator.hasNext()) {
      
                    System.out.print(
                        "  "
                        + eachListIterator.next()
                        + ", ");
                }
                System.out.println("], ");
            }
            System.out.println("]");
        }
      
        // Driver code
        public static void main(String[] args)
        {
      
            // List of Lists
            ArrayList<List<Integer> > listOfLists
                = new ArrayList<List<Integer> >();
      
            // Create N lists one by one
            // and append to the list of lists
            List<Integer> list1
                = new ArrayList<Integer>();
            list1.add(5);
            list1.add(10);
            listOfLists.add(list1);
      
            List<Integer> list2
                = new ArrayList<Integer>();
            list2.add(1);
            listOfLists.add(list2);
      
            List<Integer> list3
                = new ArrayList<Integer>();
            list3.add(20);
            list3.add(30);
            list3.add(40);
            listOfLists.add(list3);
      
            // Iterate the 2D list
            iterateUsingIterator(listOfLists);
        }
    }

    Producción:

    [
     [ 5,  10, ], 
     [ 1, ], 
     [ 20,  30,  40, ], 
    ]
    

Publicación traducida automáticamente

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