Stream flatMapToDouble() in Java with examples

Stream flatMapToDouble(Function mapper) returns an DoubleStream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element. Stream flatMapToDouble(Function mapper) is an intermediate operation. These operations are always lazy. Intermediate operations are invoked on a Stream instance and after they finish their processing, they give a Stream instance as output.
Note : Each mapped stream is closed after its contents have been placed into this stream. If a mapped stream is null, an empty stream is used, instead.
Syntax :
DoubleStream flatMapToDouble(Function<? super T, ? extends DoubleStream> mapper) Where, DoubleStream is a sequence of primitive double-valued elements and T is the type of stream elements. mapper is a stateless function which is applied to each element and the function returns the new stream.
Example 1 : flatMapToDouble() function with operation of parsing string to double.
// Java code for Stream flatMapToDouble// (Function mapper) to get an DoubleStream// consisting of the results of replacing// each element of this stream with the// contents of a mapped stream.import java.util.*;import java.util.stream.DoubleStream;  class GFG {      // Driver code    public static void main(String[] args)    {          // Creating a list of Strings        List<String> list = Arrays.asList("1.5", "2.7", "3",                                                "4", "5.6");          // Using Stream flatMapToDouble(Function mapper)        list.stream().flatMapToDouble(num         -> DoubleStream.of(Double.parseDouble(num)))        .forEach(System.out::println);    }} |
Output :
1.5 2.7 3.0 4.0 5.6
Example 2 : flatMapToDouble() function with operation of returning stream with length of strings.
// Java code for Stream flatMapToDouble// (Function mapper) to get an DoubleStream// consisting of the results of replacing// each element of this stream with the// contents of a mapped stream.import java.util.*;import java.util.stream.DoubleStream;  class GFG {      // Driver code    public static void main(String[] args)    {          // Creating a List of Strings        List<String> list = Arrays.asList("Geeks", "GFG",                                 "Lazyroar", "gfg");          // Using Stream flatMapToDouble(Function mapper)        // to get length of all strings present in list        list.stream().flatMapToDouble(str         -> DoubleStream.of(str.length()))        .forEach(System.out::println);    }} |
Output :
5.0 3.0 13.0 3.0



