哪些操作保持有序背景额外积分
TL;DR;我正在寻找一个可以查找某个中间或终端操作的地方。在哪里可以找到此类文档?
编辑这不是如何确保java8流中的处理顺序?的副本,因为该问题没有提供全面的操作列表。
背景
软件包文档说:
流是否具有遭遇顺序取决于源和中间操作
在这个优秀的堆栈溢出答案中重复了这一点
为了确保在整个流操作中维护排序,您必须研究流源的文档,所有中间操作和终端操作,以确定它们是否保持顺序(或者源是否首先具有排序)。
这一切都很好,但是我应该查看哪些文档?包文档在保证排序的示例中提到,但它没有详尽的列表。Stream 类的 javadoc 记录了一些中间操作,但不是全部。以地图
为例:map
返回一个流,该流由将给定函数应用于此流的元素的结果组成。
这是一个中间操作。
或过滤器
返回一个流,该流由此流中与给定谓词匹配的元素组成。
这是一个中间操作。
这些都不能描述它们是否保持顺序。
这个堆栈溢出答案声称:
实际上,默认情况下,每个中间操作都保留一个顺序。唯一的例外是:
- unordered() 它删除了排序约束。
- sorted() 它改变了顺序。
如果未显式指定,则可以假定该操作保持顺序。即使 distinct() 也保持了顺序,尽管它增加了并行流的复杂性。
但是是否有任何官方文件来支持这一点?