Java8 unordered()无序化无效, 多次运行结果还是与流中元素顺序一致
// 多次运行结果: 5, 1, 2, 6, 3, 7, 4 没有达到无序的效果
Stream.of(5, 1, 2, 6, 3, 7, 4).unordered().forEach(System.out::println);
求大神指教
相关代码
/**
* S unordered(); 产生一个与当前流中元素相同的无序流, 当流本身就是无序或流已经无序, 会返回流本身
*/
@Test
public void unorderedTest() {
Stream.of(5, 1, 2, 6, 3, 7, 4).forEach(System.out::println);
// 多次运行结果: 5, 1, 2, 6, 3, 7, 4 没有达到无序的效果 TODO
Stream.of(5, 1, 2, 6, 3, 7, 4).unordered().forEach(System.out::println);
}
unordered()
操作不会执行任何操作来显式地对流进行排序。它的作用是消除了流必须保持有序的约束,从而允许后续操作使用不必考虑排序的优化。您可以在Java 8文档中阅读此内容:
可以比较下面的结果