GeeksforGeeks App
Open App
Browser
Continue

# Flatten a Stream of Arrays in Java using forEach loop

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

Examples:

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

Input: arr[][] = {{'G', 'e', 'e', 'k', 's'}, {'F', 'o', 'r'}}
Output: [G, e, e, k, s, F, o, r]
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

1. Get the Arrays in the form of 2D array.
2. Create an empty list to collect the flattened elements.
3. With the help of forEach loop, convert each elements of the array into stream and add it to the list
4. Now convert this list into stream using stream() method.
5. Now flatten the stream by converting it into array using toArray() method.

Below is the implementation of the above approach:

Example 1: Using arrays of integer.

 `// Java program to flatten a stream of arrays``// using forEach() method`` ` `import` `java.util.ArrayList;``import` `java.util.Arrays;``import` `java.util.List;``import` `java.util.stream.Stream;`` ` `class` `GFG {`` ` `    ``// Function to flatten a Stream of Arrays``    ``public` `static` ` Stream flattenStream(T[][] arrays)``    ``{`` ` `        ``// Create an empty list to collect the stream``        ``List list = ``new` `ArrayList<>();`` ` `        ``// Using forEach loop``        ``// convert the array into stream``        ``// and add the stream into list``        ``for` `(T[] array : arrays) {``            ``Arrays.stream(array)``                ``.forEach(list::add);``        ``}`` ` `        ``// Convert the list into Stream and return it``        ``return` `list.stream();``    ``}`` ` `    ``public` `static` `void` `main(String[] args)``    ``{`` ` `        ``// Get the arrays to be flattened.``        ``Integer[][] arr = {``            ``{ ``1``, ``2` `},``            ``{ ``3``, ``4``, ``5``, ``6` `},``            ``{ ``7``, ``8``, ``9` `}``        ``};`` ` `        ``// Flatten the Stream``        ``Integer[] flatArray = flattenStream(arr)``                                  ``.toArray(Integer[] ::``new``);`` ` `        ``// Print the flattened array``        ``System.out.println(Arrays.toString(flatArray));``    ``}``}`

Output:

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

Example 2: Using arrays of Characters.

 `// Java program to flatten a stream of arrays``// using forEach() method`` ` `import` `java.util.ArrayList;``import` `java.util.Arrays;``import` `java.util.List;``import` `java.util.stream.Stream;`` ` `class` `GFG {`` ` `    ``// Function to flatten a Stream of Arrays``    ``public` `static` ` Stream flattenStream(T[][] arrays)``    ``{`` ` `        ``// Create an empty list to collect the stream``        ``List list = ``new` `ArrayList<>();`` ` `        ``// Using forEach loop``        ``// convert the array into stream``        ``// and add the stream into list``        ``for` `(T[] array : arrays) {``            ``Arrays.stream(array)``                ``.forEach(list::add);``        ``}`` ` `        ``// Convert the list into Stream and return it``        ``return` `list.stream();``    ``}`` ` `    ``public` `static` `void` `main(String[] args)``    ``{`` ` `        ``// Get the arrays to be flattened.``        ``Character[][] arr = {``            ``{ ``'G'``, ``'e'``, ``'e'``, ``'k'``, ``'s'` `},``            ``{ ``'F'``, ``'o'``, ``'r'` `},``            ``{ ``'G'``, ``'e'``, ``'e'``, ``'k'``, ``'s'` `}``        ``};`` ` `        ``// Flatten the Stream``        ``Character[] flatArray = flattenStream(arr)``                                    ``.toArray(Character[] ::``new``);`` ` `        ``// Print the flattened array``        ``System.out.println(Arrays.toString(flatArray));``    ``}``}`

Output:

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

My Personal Notes arrow_drop_up
Related Tutorials