Sar*_*aya 9 java java-8 java-stream
我搜索了这个,并试图找到有关它的文档,但没有这样做.
问题很简单.我有一个List让我们说foo的话.如果我做
foo.forEach(this::doSomething)
再次使用相同的行,foo我每次都会有相同的迭代次序吗?
如果是的话,怎么样foo.stream().forEach()?
wer*_*ero 15
forEach定义在Iterable和Javadoc说:
除非实现类另有指定,否则操作按迭代顺序执行(如果指定了迭代顺序).
现在List.iterator()说:
以适当的顺序返回此列表中元素的迭代器.
因此,默认情况下,您应该期望forEach以适当的顺序枚举元素 - 除非列表实现具有不同的迭代器实现.
据Stream.forEachJavadoc告诉你,你不应该依赖订单:
此操作的行为明确是不确定的.对于并行流管道,这个操作并不能保证尊重流的相遇顺序,因为这样做会牺牲并行的利益.
但也有Stream.forEachOrdered:
如果流具有已定义的遭遇顺序,则按流的遭遇顺序对此流的每个元素执行操作.
| 归档时间: |
|
| 查看次数: |
3884 次 |
| 最近记录: |