Hey, Coders! In this tutorial, we are going to learn about flatten a stream using the flatMap() method in Java.
map(): It transforms each stream element into a single element of a new stream.
flatMap(): It transforms each stream element into a stream of multiple elements.
Flattening: It is the process of converting two or more lists into a single list by merging them. It contains all the elements of all the lists.
flatten a stream using flatMap() method in Java
Example 1:
Before flattening: [[1,2,3], [4,5,6], [7,8,9]]
After flattening: [1,2,3,4,5,6,7,8,9]
Example 2:
Before flattening: [[“A”,”B”,”C”], [“D”,”E”,”F”], [“G”,”H”,”I”]]
After flattening: [“A”,”B”,”C”,”D”,”E”,”F”,”G”,”H”,”I”]
Syntax:
<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
- R is a parameter that represents the new stream type.
- mapper is the function that maps each element of the stream to a new stream.
- T is the type of the stream element.
- Stream is an interface.
Code 1: flatMap() function with provided mapping integers.
import java.util.*;
import java.util.stream.Collectors;
class CodeSpeedy
{
public static void main(String[] args)
{
List<Integer> a = Arrays.asList(1,2,3);
List<Integer> b = Arrays.asList(4,5,6);
List<Integer> c = Arrays.asList(7,8,9);
List<List<Integer>> ListofInts = Arrays.asList(a, b, c);
System.out.println("Before flattening: " + ListofInts);
List<Integer> listInt = ListofInts.stream() .flatMap(list -> list.stream()) .collect(Collectors.toList());
System.out.println("After flattening: " + listInt);
}
}
Output:
Before flattening: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] After flattening: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Code 2: flatMap() function with provided mapping characters.
import java.util.*;
import java.util.stream.Collectors;
class CodeSpeedy {
public static void main(String[] args) {
List<String> a = Arrays.asList("A","B","C");
List<String> b = Arrays.asList("D","E","F");
List<String> c = Arrays.asList("G","H","I");
List<List<String>> ListOfAlphabets = Arrays.asList(a,b,c);
System.out.println("Before flattening: " + ListOfAlphabets);
List<String> listAlphabets = ListOfAlphabets.stream().flatMap(alphabetList -> alphabetList.stream()).distinct().collect(Collectors.toList());
System.out.println("After flattening: " + listAlphabets);
}
}
Output:
Before flattening: [[A, B, C], [D, E, F], [G, H, I]] After flattening: [A, B, C, D, E, F, G, H, I]