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 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));
}
} |
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 <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));
}
} |
Output:
[G, e, e, k, s, F, o, r, G, e, e, k, s]
Article Tags :
Recommended Articles