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:
Below is the implementation of the above approach:
import java.util.*;
public class List_of_list {
public static <K> void
iterateUsingForEach(List<List<K> > listOfLists)
{
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( "]" );
}
public static void main(String[] args)
{
ArrayList<List<Integer> > listOfLists
= new ArrayList<List<Integer> >();
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);
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:
import java.util.*;
class List_of_list {
public static <K> void
iterateUsingIterator(List<List<K> > listOfLists)
{
Iterator listOfListsIterator
= listOfLists.iterator();
System.out.println( "[" );
while (listOfListsIterator.hasNext()) {
List<K> list = new ArrayList<K>();
list = (List<K>)listOfListsIterator.next();
Iterator eachListIterator
= list.iterator();
System.out.print( " [" );
while (eachListIterator.hasNext()) {
System.out.print(
" "
+ eachListIterator.next()
+ ", " );
}
System.out.println( "], " );
}
System.out.println( "]" );
}
public static void main(String[] args)
{
ArrayList<List<Integer> > listOfLists
= new ArrayList<List<Integer> >();
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);
iterateUsingIterator(listOfLists);
}
}
|
Output:
[
[ 5, 10, ],
[ 1, ],
[ 20, 30, 40, ],
]