以下两个代码段产生相同的结果.
用flatMap:
Stream.iterate(2, n -> n + 4)
.flatMap(n -> Stream.of(n, -(n + 2)));
Run Code Online (Sandbox Code Playgroud)
随着map其次是flatMap使用identity:
Stream.iterate(2, n -> n + 4)
.map(n -> Stream.of(n, -(n + 2)))
.flatMap(Function.identity());
Run Code Online (Sandbox Code Playgroud)
因此flatten,在Stream接口中包含无参数方法(如Scala的Stream)似乎很自然,允许将前面的示例写成:
Stream.iterate(2, n -> n + 4)
.map(n -> Stream.of(n, -(n + 2)))
.flatten();
Run Code Online (Sandbox Code Playgroud)
那么为什么API中没有flatten()方法Stream呢?