什么是“一个”呢;逃生舱操作“;在Java流中?
我在阅读Java文档时遇到: 除了转义图案填充操作什么是“一个”呢;逃生舱操作“;在Java流中?,java,java-8,java-stream,Java,Java 8,Java Stream,我在阅读Java文档时遇到: 除了转义图案填充操作iterator()和spliterator(),执行在调用终端操作时开始,在终端操作完成时结束 我不知道“逃生舱操作”是什么意思。有人能解释一下这个术语吗?来自流包的: 几乎在所有情况下,终端操作都渴望完成它们的任务 数据源的遍历和管道的处理 返回。只有终端操作iterator()和spliterator() 不是;它们作为“逃生舱口”提供,以启用任意 在现有的 操作不足以完成任务 这意味着在大多数情况下,当终端操作返回时,流遍历就完成了,但在
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()
方法来访问流的元素,并且流将仅在您第一次执行此操作时开始处理。只有在使用迭代器()
或拆分器()
终端操作时,这才是正确的