Flatmap()方法是否保留了流的顺序?

时间:2018-02-23 11:25:53

标签: java java-8

我需要连接多个整数数组,并在我这样做时保留元素的顺序。

例如;

 final Integer[] arr1= { 1, 3, 2 };
 final Integer[] arr2= { 4, 6, 5 };
 final Integer[] arr3= { 7, 9, 8, 10 };
 final Integer[] arr4= { 11, 13, 12, 15, 14 };

因此,当我尝试使用Java 8流将这4个数组合并为一个数组时;

Stream.of(arr1, arr2, arr3, arr4).flatMap(Stream::of).toArray(Integer[]::new); 

这完美地给出了结果;

[1, 3, 2, 4, 6, 5, 7, 9, 8, 10, 11, 13, 12, 15, 14]

但是,我阅读了一些文章和评论,人们声称flatMap方法并不总是保留原始流的顺序。它是否正确?我还能做些什么来保留原始订单?

1 个答案:

答案 0 :(得分:5)

  

flatmap()方法是否保留了流的顺序?

是的,确实如此,map()也是。

  

然而,我读了一些文章和评论,人们声称   flatMap方法并不总是保留原始的顺序   流。这是对的吗?

没有任何现实生活中的例子,很难说这一点。

资料来源:zeroturnaround.com

enter image description here