Flatten a Stream of Arrays in Java using forEach loop - GeeksforGeeks

11 Dec, 2018
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]

Approach:
Get the Arrays in the form of 2D array.Create an empty list to collect the flattened elements.With the help of forEach loop, convert each elements of the array into stream and add it to the listNow convert this list into stream using stream() method.Now flatten the stream by converting it into array using toArray() method.
Get the Arrays in the form of 2D array.
Create an empty list to collect the flattened elements.
With the help of forEach loop, convert each elements of the array into stream and add it to the list
Now convert this list into stream using stream() method.
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 <T> Stream<T> flattenStream(T[][] arrays)    {          // Create an empty list to collect the stream        List<T> 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));    }}
[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 <T> Stream<T> flattenStream(T[][] arrays)    {          // Create an empty list to collect the stream        List<T> 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));    }}
[G, e, e, k, s, F, o, r, G, e, e, k, s]

Java - util package
Java-Array-Programs
Java-Arrays
java-stream
Java-Stream-programs
Java
Java Programs
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Constructors in Java
Exceptions in Java
Functional Interfaces in Java
Different ways of Reading a text file in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
How to Iterate HashMap in Java?
Program to print ASCII Value of a character