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

17 Mar, 2020
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 iteratedWe 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 listfor (List list : listOfLists)
 { }
In the second for-each loop, each item of the list in each row will be taken separatelyfor (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  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);    }}Output:[
 [ 5,  10, ], 
 [ 1, ], 
 [ 20,  30,  40, ], 
]
Iterating over the list of lists using iterator:Get the 2D list to the iteratedWe need two iterators to iterate the 2D list successfully.The first iterator will iterate each row of the 2D lists as a separate listIterator listOfListsIterator = listOfLists.iterator();
Each row of the 2D list can be obtained with the help of next() method of IteratorlistOfListsIterator.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 separatelyIterator 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  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);    }}Output:[
 [ 5,  10, ], 
 [ 1, ], 
 [ 20,  30,  40, ], 
]

Iterating over the list of lists using loop:Get the 2D list to the iteratedWe 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 listfor (List list : listOfLists)
 { }
In the second for-each loop, each item of the list in each row will be taken separatelyfor (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  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);    }}Output:[
 [ 5,  10, ], 
 [ 1, ], 
 [ 20,  30,  40, ], 
]

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 listfor (List list : listOfLists)
 { }

for (List list : listOfLists)
 { }

In the second for-each loop, each item of the list in each row will be taken separatelyfor (K item : list)
 { }

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  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);    }}
Output:
[
 [ 5,  10, ], 
 [ 1, ], 
 [ 20,  30,  40, ], 
]

Iterating over the list of lists using iterator:Get the 2D list to the iteratedWe need two iterators to iterate the 2D list successfully.The first iterator will iterate each row of the 2D lists as a separate listIterator listOfListsIterator = listOfLists.iterator();
Each row of the 2D list can be obtained with the help of next() method of IteratorlistOfListsIterator.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 separatelyIterator 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  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);    }}Output:[
 [ 5,  10, ], 
 [ 1, ], 
 [ 20,  30,  40, ], 
]

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 listIterator listOfListsIterator = listOfLists.iterator();

Iterator listOfListsIterator = listOfLists.iterator();

Each row of the 2D list can be obtained with the help of next() method of IteratorlistOfListsIterator.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();

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 separatelyIterator eachListIterator = list.iterator();

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  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);    }}
Output:
[
 [ 5,  10, ], 
 [ 1, ], 
 [ 20,  30,  40, ], 
]

Java-Iterator
java-list
Traversal
Java
Java
Traversal
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Introduction to Java
Constructors in Java
Exceptions in Java
Generics in Java
Functional Interfaces in Java
Java Programming Examples
Strings in Java
Differences between JDK, JRE and JVM
Abstraction in Java