什么是Javastream中的“逃生 – 孵化操作”?

我正在阅读Java文档,遇到这样一句话 :

除了escape-hatch操作iterator()spliterator() ,当调用terminal操作时开始执行,当terminal操作完成时结束。

我不确定什么是“逃生孵化”的意思。 有人能解释这个词吗?

stream包的javadoc :

在几乎所有的情况下, terminal操作都非常急切 ,在返回之前完成对数据源的处理和stream水线的处理。 只有terminal操作iterator()spliterator()不是; 如果现有的操作不足以完成任务,则可以将这些提供为“逃生舱口”,以便实现任意客户端控制的pipe线穿越。

这意味着在大多数情况下,当terminal操作返回时stream遍历完成,但是在iterator()spliterator()的情况下,stream遍历完成:通过使用这些terminal操作之一返回IteratorSpliterator ,但是stream水线仍然“打开”,并且将通过迭代器请求元素来处理它。 这样, stream处理变得懒惰 ,因为只有在请求下一个元素时才会执行stream上的操作。

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

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