什么是“一个”呢;逃生舱操作“;在Java流中?

什么是“一个”呢;逃生舱操作“;在Java流中?,java,java-8,java-stream,Java,Java 8,Java Stream,我在阅读Java文档时遇到: 除了转义图案填充操作iterator()和spliterator(),执行在调用终端操作时开始,在终端操作完成时结束 我不知道“逃生舱操作”是什么意思。有人能解释一下这个术语吗?来自流包的: 几乎在所有情况下,终端操作都渴望完成它们的任务 数据源的遍历和管道的处理 返回。只有终端操作iterator()和spliterator() 不是;它们作为“逃生舱口”提供,以启用任意 在现有的 操作不足以完成任务 这意味着在大多数情况下,当终端操作返回时,流遍历就完成了,但在

我在阅读Java文档时遇到:

除了转义图案填充操作
iterator()
spliterator()
,执行在调用终端操作时开始,在终端操作完成时结束

我不知道“逃生舱操作”是什么意思。有人能解释一下这个术语吗?

来自
包的:

几乎在所有情况下,终端操作都渴望完成它们的任务 数据源的遍历和管道的处理 返回。只有终端操作
iterator()
spliterator()
不是;它们作为“逃生舱口”提供,以启用任意 在现有的 操作不足以完成任务

这意味着在大多数情况下,当终端操作返回时,流遍历就完成了,但在
iterator()
spliterator()
的情况下,流遍历就完成了:通过使用这些终端操作中的一个返回
iterator
spliterator
,但管道仍然“打开”当元素通过迭代器被请求时,它将被处理。通过这种方式,流处理变得迟缓,因为只有在请求下一个元素时才执行流上的操作

Iterator<Person> iterator = persons
    .stream()
    .filter(p -> !p.getName().equals("Mike Tyson"))
    .iterator();
迭代器迭代器=人
.stream()
.filter(p->!p.getName().equals(“Mike Tyson”))
.iterator();
调用
iterator()
方法后,流被“终止”:您不能链接更多的方法。但是您可以通过调用返回迭代器的
next()
方法来访问流的元素,并且流将仅在您第一次执行此操作时开始处理。只有在使用
迭代器()
拆分器()
终端操作时,这才是正确的