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.
- 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, ], ]
- 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