Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8 并行流toArray维持秩序_Java 8_Java Stream_Collectors - Fatal编程技术网

Java 8 并行流toArray维持秩序

Java 8 并行流toArray维持秩序,java-8,java-stream,collectors,Java 8,Java Stream,Collectors,我读过关于并发收集器维护输入列表顺序的文章。因此,如果我使用收集器来ArrayList,它可以保证有序收集。 此外,有序列表上的映射函数也可以维护顺序。 我在toArray找不到任何关于订单保存的文档 即使管道被限制生成与流源的相遇顺序一致的结果(例如,IntStream.range(0,5).parallel().map(x->x*2).toArray()必须生成[0,2,4,6,8]),也不能保证映射器函数应用于单个元素的顺序,或者在哪个线程中为给定元素执行任何行为参数 我也会 Stream

我读过关于并发收集器维护输入列表顺序的文章。因此,如果我使用收集器来ArrayList,它可以保证有序收集。
此外,有序列表上的映射函数也可以维护顺序。
我在toArray找不到任何关于订单保存的文档

即使管道被限制生成与流源的相遇顺序一致的结果(例如,IntStream.range(0,5).parallel().map(x->x*2).toArray()必须生成[0,2,4,6,8]),也不能保证映射器函数应用于单个元素的顺序,或者在哪个线程中为给定元素执行任何行为参数

我也会

Stream.map(x->x).toArray()
产生有序的结果?或者我应该使用收集器。

引用的部分已经举例说明,
map
toArray
将维持遭遇顺序

当您浏览时,您将看到它从未明确声明维护遭遇顺序的操作,但相反,它明确声明了操作无序或具有特殊策略的时间,具体取决于有序状态

  • 显然,
    unordered()
    会显式收回遭遇顺序
  • forEach
    findAny
    不尊重遭遇顺序
  • Stream.concat
    如果两个输入流中至少有一个是无序的,则返回一个无序流(一个有争议的行为,但事实就是这样)
  • Stream.generate()
    生成无序流
  • skip
    limit
    takeWhile
    dropWhile
    遵守遭遇顺序,这可能会在并行执行中造成严重的性能损失
  • distinct()
    sorted()
    对于有序流是稳定的,
    distinct()
    在流无序时可能具有更好的并行性能
  • collect(Collector)
    如果收集器是无序的,则可能表现为无序,这仅由语句暗示,如果收集器是并发的,并且流是无序的,或者收集器是无序的,则操作将是并发的。有关更多详细信息,我们必须参考和

请注意,虽然操作
count()
allMatch
anyMatch
noneMatch
没有关于遭遇顺序的语句,但这些操作的语义意味着结果根本不应该依赖于遭遇顺序。

引用的文档部分不够明确吗?