Flatten a Stream of Map in Java using forEach loop

Last Updated : 11 Dec, 2018

Given a Stream of Map in Java, the task is to Flatten the Stream using forEach() method.

Examples:

```Input: map = {1=[1, 2], 2=[3, 4, 5, 6], 3=[7, 8, 9]}
Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

Input: map = {1=[G, e, e, k, s], 2=[F, o, r], 3=[G, e, e, k, s]}
Output: [G, e, e, k, s, F, o, r]
```

Approach:

1. Get the Map to be flattened.
2. Create an empty list to collect the flattened elements.
3. With the help of forEach loop, convert each elements of the Map values into stream and add it to the list
4. This list is the required flattened map.

Below is the implementation of the above approach:

Example 1: Using lists of integer.

 `// Java program to flatten a stream of map ` `// using forEach() method ` ` `  `import` `java.util.*; ` `import` `java.util.stream.*; ` ` `  `class` `GFG { ` ` `  `    ``// Function to flatten a Stream of Map ` `    ``public` `static` ` List flattenStream(Collection > lists) ` `    ``{ ` ` `  `        ``// Create an empty list to collect the stream ` `        ``List finalList = ``new` `ArrayList<>(); ` ` `  `        ``// Using forEach loop ` `        ``// convert each list into stream ` `        ``// and add the stream into list ` `        ``for` `(List list : lists) { ` `            ``list.stream() ` `                ``.forEach(finalList::add); ` `        ``} ` ` `  `        ``// Return the final flattened list ` `        ``return` `finalList; ` `    ``} ` ` `  `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` ` `  `        ``// Get the map to be flattened. ` `        ``Map > map = ``new` `HashMap<>(); ` `        ``map.put(``1``, Arrays.asList(``1``, ``2``)); ` `        ``map.put(``2``, Arrays.asList(``3``, ``4``, ``5``, ``6``)); ` `        ``map.put(``3``, Arrays.asList(``7``, ``8``, ``9``)); ` ` `  `        ``// Flatten the Stream ` `        ``List flatList = flattenStream(map.values()); ` ` `  `        ``// Print the flattened list ` `        ``System.out.println(flatList); ` `    ``} ` `} `

Output:

```[1, 2, 3, 4, 5, 6, 7, 8, 9]
```

Example 2: Using lists of Characters.

 `// Java program to flatten a stream of map ` `// using forEach() method ` ` `  `import` `java.util.*; ` `import` `java.util.stream.*; ` ` `  `class` `GFG { ` ` `  `    ``// Function to flatten a Stream of Map ` `    ``public` `static` ` List flattenStream(Collection > lists) ` `    ``{ ` ` `  `        ``// Create an empty list to collect the stream ` `        ``List finalList = ``new` `ArrayList<>(); ` ` `  `        ``// Using forEach loop ` `        ``// convert each list into stream ` `        ``// and add the stream into list ` `        ``for` `(List list : lists) { ` `            ``list.stream() ` `                ``.forEach(finalList::add); ` `        ``} ` ` `  `        ``// Return the final flattened list ` `        ``return` `finalList; ` `    ``} ` ` `  `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` ` `  `        ``// Get the map to be flattened. ` `        ``Map > map = ``new` `HashMap<>(); ` `        ``map.put(``1``, Arrays.asList(``'G'``, ``'e'``, ``'e'``, ``'k'``, ``'s'``)); ` `        ``map.put(``2``, Arrays.asList(``'F'``, ``'o'``, ``'r'``)); ` `        ``map.put(``3``, Arrays.asList(``'G'``, ``'e'``, ``'e'``, ``'k'``, ``'s'``)); ` ` `  `        ``// Flatten the Stream ` `        ``List flatList = flattenStream(map.values()); ` ` `  `        ``// Print the flattened list ` `        ``System.out.println(flatList); ` `    ``} ` `} `

Output:

```[G, e, e, k, s, F, o, r, G, e, e, k, s]
```

Previous
Next