gpt4 book ai didi

java - Java 流中的 "escape-hatch operation"是什么?

转载 作者:IT老高 更新时间:2023-10-28 20:42:54 25 4
gpt4 key购买 nike

我在阅读 Java 文档时遇到了 this sentence :

Except for the escape-hatch operations iterator() and spliterator(), execution begins when the terminal operation is invoked, and ends when the terminal operation completes.

我不确定“逃生舱口操作”是什么意思。有人可以解释一下这个术语吗?

最佳答案

来自 javadoc stream 包的:

In almost all cases, terminal operations are eager, completing their traversal of the data source and processing of the pipeline before returning. Only the terminal operations iterator() and spliterator() are not; these are provided as an "escape hatch" to enable arbitrary client-controlled pipeline traversals in the event that the existing operations are not sufficient to the task.

这意味着在大多数情况下,当终端操作返回时,流遍历就完成了,但在 iterator()spliterator() 的情况下则不是:通过使用这些终端操作之一返回 IteratorSpliterator,但管道仍处于“打开”状态,并且将在通过迭代器请求元素时对其进行处理。这样流处理变得懒惰,因为流上的操作只有在请求下一个元素时才会执行。

Iterator<Person> iterator = persons
.stream()
.filter(p -> !p.getName().equals("Mike Tyson"))
.iterator();

iterator() 方法被调用后,流被“终止”:你不能链接更多的方法。但是您可以通过调用返回的迭代器的 next() 方法来访问流的元素,并且仅在您第一次执行此操作时才开始处理流。并且只有在使用 iterator()spliterator() 终端操作时才适用。

关于java - Java 流中的 "escape-hatch operation"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42524688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com