Given a 2D list, the task is to iterate this 2D list in Java.
2D list (list of lists)
The 2D list refers to a list of lists, i.e. each row of the list is another list.
[ [5, 10], [1], [20, 30, 40] ]
Iterate a 2D list: There are two ways of iterating over a list of list in Java.
- Iterating over the list of lists using loop:
- Get the 2D list to the iterated
- We need two for-each loops to iterate the 2D list successfully.
- In the first for-each loop, each row of the 2D lists will be taken as a separate list
for (List list : listOfLists) { } - In the second for-each loop, each item of the list in each row will be taken separately
for (K item : list) { } - Hence we can do any operation on this item. Here we are printing the item.
Below is the implementation of the above approach:
// Java code to demonstrate the concept of// list of lists using loopÂÂimportjava.util.*;publicclassList_of_list {   Â// Iterate the 2D list using loop   Â// and print each element   Âpublicstatic<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   Âpublicstaticvoidmain(String[] args)   Â{       Â// List of Lists       ÂArrayList<List<Integer> > listOfLists           Â=newArrayList<List<Integer> >();       Â// Create N lists one by one       Â// and append to the list of lists       ÂList<Integer> list1           Â=newArrayList<Integer>();       Âlist1.add(5);       Âlist1.add(10);       ÂlistOfLists.add(list1);       ÂList<Integer> list2           Â=newArrayList<Integer>();       Âlist2.add(1);       ÂlistOfLists.add(list2);       ÂList<Integer> list3           Â=newArrayList<Integer>();       Âlist3.add(20);       Âlist3.add(30);       Âlist3.add(40);       ÂlistOfLists.add(list3);       Â// Iterate the 2D list       ÂiterateUsingForEach(listOfLists);   Â}}Output:
[ [ 5, 10, ], [ 1, ], [ 20, 30, 40, ], ]
- Iterating over the list of lists using iterator:
- Get the 2D list to the iterated
- We need two iterators to iterate the 2D list successfully.
- The first iterator will iterate each row of the 2D lists as a separate list
Iterator listOfListsIterator = listOfLists.iterator();
- Each row of the 2D list can be obtained with the help of next() method of Iterator
listOfListsIterator.next();
But the next() method returns the Iterator as an Object’s object. Hence we need to cast this returned object into a list.
list = (List)listOfListsIterator.next();
- The second iterator will iterate each item of the list in each row separately
Iterator eachListIterator = list.iterator();
- Hence we can do any operation on this item. Here we are printing the item.
Below is the implementation of the above approach:
// Java code to demonstrate the concept of// list of lists using iteratorÂÂimportjava.util.*;ÂÂclassList_of_list {   Â// Iterate the 2D list using Iterator   Â// and print each element   Âpublicstatic<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 =newArrayList<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   Âpublicstaticvoidmain(String[] args)   Â{       Â// List of Lists       ÂArrayList<List<Integer> > listOfLists           Â=newArrayList<List<Integer> >();       Â// Create N lists one by one       Â// and append to the list of lists       ÂList<Integer> list1           Â=newArrayList<Integer>();       Âlist1.add(5);       Âlist1.add(10);       ÂlistOfLists.add(list1);       ÂList<Integer> list2           Â=newArrayList<Integer>();       Âlist2.add(1);       ÂlistOfLists.add(list2);       ÂList<Integer> list3           Â=newArrayList<Integer>();       Âlist3.add(20);       Âlist3.add(30);       Âlist3.add(40);       ÂlistOfLists.add(list3);       Â// Iterate the 2D list       ÂiterateUsingIterator(listOfLists);   Â}}Output:
[ [ 5, 10, ], [ 1, ], [ 20, 30, 40, ], ]
