为什么并行流在Java 8中被顺序地收集

10 浏览
0 Comments

为什么并行流在Java 8中被顺序地收集

为什么forEach会以随机顺序打印数字,而collect总是按照原始顺序收集元素,即使是从并行流中收集?

Integer[] intArray = {1, 2, 3, 4, 5, 6, 7, 8};
List listOfIntegers = new ArrayList<>(Arrays.asList(intArray));
System.out.println("Parallel Stream: ");
listOfIntegers
  .stream()
  .parallel()
  .forEach(e -> System.out.print(e + " "));
System.out.println();
// 收集器
List l = listOfIntegers
  .stream()
  .parallel()
  .collect(Collectors.toList());
System.out.println(l);

输出:

Parallel Stream: 
8 1 6 2 7 4 5 3 
[1, 2, 3, 4, 5, 6, 7, 8]

0