How to flatten a Nested List in Java
Points To Remember
- See How to create a Nested List from a String input. We use this class to create a nested list and then we try to flatten this list.
Program : Flatten a Nested List
Here we write a Java function that will accept a nested ist upto any level of nesting and flatten this list.import java.util.List; import java.util.LinkedList; import java.util.Scanner; class FlattenList{ public static void main(String args[]){ CreateList obj = new CreateList(); // Get the nested list sample List<Object> nestedList = obj.createNestedList(); System.out.println("-----------------------------------"); // Print the nested list System.out.println("Nested List = " + nestedList); // Print the sample nested list after flattening the list System.out.println("Flatten List = " + new FlattenList().flattenList(nestedList)); } public List<Integer> flattenList(List<Object> nestedList){ List<Integer> flatList = new LinkedList<Integer>(); for(Object obj : nestedList){ if(obj instanceof List) // If the value is a List for(Integer integer : flattenList((List)obj)) // traverse the returned list and add it to the list. flatList.add(integer); if(obj instanceof Integer) // If the value is an integer number add it to list flatList.add((Integer)obj); } return flatList; } }The above program will give the following output
Enter the Nested List [1,2,3,[4,5],6,[7,[8,9]],10,[11,[12,[13,[14,15],16]]]] ----------------------------------- Nested List = [1, 2, 3, [4, 5], 6, [7, [8, 9]], 10, [11, [12, [13, [14, 15], 16]]]] Flatten List = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
Algorithm
- We traverse the List from start to end.
- At each element we check if the element is a List or Integer.
- If it is a Integer we add it to the output list.
- If it is a list we use recursion to flatten this list.
Using the above steps any level of nested list can be flatten.
No comments: