#
flatMap() method
This tutorial explains how we can use flatMap()
method for Streams in Java.
flatMap()
helps us to flatten the data structure to simplify further operations.
Please take a look at the following example and read carefully the comments. The code is self-explanatory.
This example is created from a simple Spring Boot application created with Spring Initializr. I am using Maven, Java 17, Spring Boot 3.1.0.
From the base application downloaded from Spring Initializr, I updated the main class as below:
DemoApplication.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ExecutionException;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) throws InterruptedException, ExecutionException {
// Create the application context and start Spring Boot
ApplicationContext appContext = SpringApplication.run(DemoApplication.class, args);
List<List<String>> wordsList = Arrays.asList(
Arrays.asList("John", "Dan Brown"),
Arrays.asList("Laptop", "BMW", "Laptop"),
Arrays.asList("computer", "project"));
wordsList.stream()
// Stream<List<String>> will be converted to Stream<String>
.flatMap(Collection::stream)
.forEach(p -> System.out.println(p));
}
}
When I run this code I receive:
John
Dan Brown
Laptop
BMW
Laptop
computer
project
When we are working with Streams, we can have:
- INTERMEDIATE operations:
filter
,map
,limit
,sorted
,peak
,distinct
,skip
,flatMap
- TERMINAL operations:
forEach
,count
,sum
,min
,collect
,reduce
,anyMatch
,noneMatch
,allMatch