Introduction

In this article we will be learning about working of flatMap operation in Java. The FlatMap is an intermediate operation in Java Streams that maps each element to a stream and then flattens the resulting streams into a single stream. It's like a combination of map and flatten operations. It's particularly useful when dealing with nested collections or when you need to perform one-to-many transformations.

How does flatMap work?

Example. Let's look at a example to understand flatMap better:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class FlatMapExample {
    public static void main(String[] args) {
        List<List<Integer>> nestedList = Arrays.asList(
            Arrays.asList(1, 2, 3),
            Arrays.asList(4, 5, 6),
            Arrays.asList(7, 8, 9)
        );

        List<Integer> flattenedList = nestedList.stream() // convert to stream
            .flatMap(List::stream) // flattens all the resulting streams into a single stream.
            .collect(Collectors.toList()); // output is containing all the elements

        System.out.println("Flattened list: " + flattenedList);
    }
}

In the above example

  1. We start with a nested list of integers.
  2. We use flatMap to flatten this nested structure.
  3. List::stream is used as the mapping function, which converts each inner list to a stream.
  4. The result is a single flattened list containing all the integers.

The output of above example will be:

Flattened list: [1, 2, 3, 4, 5, 6, 7, 8, 9]

Benefits of flatMap

Summary

flatMap is a powerful tool in Java's functional programming toolkit. It simplifies complex data transformations and allows for more expressive and concise code when dealing with nested structures or one-to-many relationships. Understanding and effectively using flatMap can significantly enhance your ability to process and manipulate data in Java applications.