在界面Stream中:
中间操作可分为有状态和无状态。它们会影响并行Stream的结果。
只有两个终端操作是非确定性方法:findAny()和forEach(Consumer)。它们会影响并行Stream的结果。
如果中间无状态操作执行延迟操作,则可能产生副作用。这会影响并行Stream的结果。
中间操作可分类为:
有状态
无状态
这是我的两个问题:
这些规则是否正确?
非常感谢!
一个。
我想条件1和2都是正确的。我想添加一些操作。
reduce
也是有状态行动的一部分。
forEach
是无国籍行动的一部分。
请注意,无状态操作如果产生副作用,可能会变为有状态。
第三种说法并不完全正确。如果订购了一个流并且我们并行处理它,那么当与无状态操作一起使用时,该流将保持有序。这就是为什么我们需要在流上调用方法unordered()
以使其无序并提高效率。