我不明白为什么并行流和流在执行相同语句时会产生不同的结果。
List<String> list = Arrays.asList("1", "2", "3");
String resultParallel = list.parallelStream().collect(StringBuilder::new,
(response, element) -> response.append(" ").append(element),
(response1, response2) -> response1.append(",").append(response2.toString()))
.toString();
System.out.println("ResultParallel: " + resultParallel);
String result = list.stream().collect(StringBuilder::new,
(response, element) -> response.append(" ").append(element),
(response1, response2) -> response1.append(",").append(response2.toString()))
.toString();
System.out.println("Result: " + result);
结果并行:1、2、3
结果:1 2 3
有人可以解释一下为什么会出现这种情况,以及我如何让非并行版本产生与并行版本相同的结果吗?
Collectors.joining
来实现相同的功能。 - Eugene