How to iterate over a 2D list (list of lists) in Java

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 loopimportjava.util.*;publicclassList_of_list {// Iterate the 2D list using loop// and print each elementpublicstatic<K>voiditerateUsingForEach(List<List<K> > listOfLists){// Iterate the 2D list// and print each elementSystem.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 codepublicstaticvoidmain(String[] args){// List of ListsArrayList<List<Integer> > listOfLists=newArrayList<List<Integer> >();// Create N lists one by one// and append to the list of listsList<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 listiterateUsingForEach(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 iteratorimportjava.util.*;classList_of_list {// Iterate the 2D list using Iterator// and print each elementpublicstatic<K>voiditerateUsingIterator(List<List<K> > listOfLists){// Iterator for the 2D listIterator 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 listIterator eachListIterator= list.iterator();System.out.print(" [");while(eachListIterator.hasNext()) {System.out.print(" "+ eachListIterator.next()+", ");}System.out.println("], ");}System.out.println("]");}// Driver codepublicstaticvoidmain(String[] args){// List of ListsArrayList<List<Integer> > listOfLists=newArrayList<List<Integer> >();// Create N lists one by one// and append to the list of listsList<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 listiterateUsingIterator(listOfLists);}}Output:
[ [ 5, 10, ], [ 1, ], [ 20, 30, 40, ], ]



