Stream <Stream>:flatMap与reduce

这个问题在这里已经有了答案:

  • 为什么在flatMap()之后的filter()在Java流中“不完全”是懒惰的? 6个答案

  • 从openJDK中的flatMap的实现中,我了解到, flatMap会将传入流的所有内容向下游推送:

    result.sequential().forEach(downstreamAsInt);
    

    另一方面, Stream::concat似乎在处理pull,并不是一次发送所有内容。

    我怀疑你的测试没有显示出全貌:

  • flatMap ,仅在第一个流被耗尽时才考虑第二个流。
  • reduce ,所有流都被推入最终的连接流中,因为直到输入流的所有内容都被消耗之后,被缩小的对象才有意义。
  • 这意味着使用一个或另一个取决于你的输入有多复杂。 如果你有一个无限的Stream<Stream<Integer>> ,reduce将永远不会完成。

    链接地址: http://www.djcxy.com/p/34755.html

    上一篇: Stream<Stream>: flatMap vs. reduce

    下一篇: How to add a custom header field to every request made by my UIWebView