【发布时间】:2021-05-20 03:09:46
【问题描述】:
我正在写一篇关于 Java Stream API 的文章。我已经阅读了 Stream 的整个包文档,并且在这里查看了类似的问题。
如果我这样说: “在终端操作被命中之前,不会评估流上的中间操作,这将实际执行它们,” 我会是正确的吗?我在 StackOverflow 上看到了不同的答案,而且每个中间操作都返回一个 Stream,所以我想知道它是否只是返回自己,然后只是跟踪中间操作以执行它。这就是“懒惰评估/执行”的意思吗?
下面的 javadoc 老实说给了我混合的信号。也许我只是愚蠢
中间操作返回一个新流。他们总是很懒惰; 执行诸如 filter() 之类的中间操作实际上并不 执行任何过滤,而是创建一个新流,当 遍历,包含初始流中匹配的元素 给定谓词。管道源的遍历直到 执行管道的终端操作。
非常感谢您的宝贵时间!抱歉,如果我遗漏了什么;(我已经坚持了很长时间!
P.S:Stream and lazy evaluation 非常相似,但是 “每个中间操作都会创建一个新流,存储提供的操作/函数并返回新流。”所以基本上,我的问题是,通过新流,它是否意味着与它相同的流?
【问题讨论】:
标签: java java-stream