Stream <Stream>:flatMap与reduce
这个问题在这里已经有了答案:
从openJDK中的flatMap的实现中,我了解到, flatMap
会将传入流的所有内容向下游推送:
result.sequential().forEach(downstreamAsInt);
另一方面, Stream::concat
似乎在处理pull,并不是一次发送所有内容。
我怀疑你的测试没有显示出全貌:
flatMap
,仅在第一个流被耗尽时才考虑第二个流。 reduce
,所有流都被推入最终的连接流中,因为直到输入流的所有内容都被消耗之后,被缩小的对象才有意义。 这意味着使用一个或另一个取决于你的输入有多复杂。 如果你有一个无限的Stream<Stream<Integer>>
,reduce将永远不会完成。
上一篇: Stream<Stream>: flatMap vs. reduce
下一篇: How to add a custom header field to every request made by my UIWebView