Meh*_*lik 42 java java-8 java-stream
我正在阅读Java文档并遇到这句话:
除了转义舱口的操作
iterator()和spliterator(),被调用的终端操作时开始执行,并且终端操作完成时结束.
我不确定"逃生舱操作"是什么意思.有人可以解释一下这个词吗?
DVa*_*rga 41
从javadoc中的的stream包:
在几乎所有情况下,终端操作都很渴望,在返回之前完成数据源的遍历和管道的处理.只有终端操作
iterator()而spliterator()不是; 这些是作为"逃生舱口"提供的,以便在现有操作不足以执行任务时启用任意客户端控制的管道遍历.
这意味着在大多数情况下,流穿越完成后,终端操作的回报,但不是在的情况下iterator()和spliterator():通过使用这些终端操作的一个Iterator或Spliterator返回,但管道仍然是"开放的",这将是处理,因为元素是通过迭代器请求的.这样,流处理变得懒惰,因为仅当请求下一个元素时才执行流上的操作.
Iterator<Person> iterator = persons
.stream()
.filter(p -> !p.getName().equals("Mike Tyson"))
.iterator();
Run Code Online (Sandbox Code Playgroud)
iterator()调用该方法后,流将"终止":您无法链接更多方法.但是您可以通过调用next()返回的迭代器的方法来访问流的元素,并且只在第一次执行此操作时才开始处理流.只有在使用iterator()或spliterator()终端操作时才会出现这种情况.
| 归档时间: |
|
| 查看次数: |
1521 次 |
| 最近记录: |