gpt4 book ai didi

java - 为什么组合器不影响输出?

转载 作者:行者123 更新时间:2023-12-02 13:48:38 26 4
gpt4 key购买 nike

下面的代码输出始终是24。

public static void main(String[] args) throws InterruptedException {
List<String> list = new ArrayList<String>();
list.add("java");
list.add("php");
list.add("python");
list.add("perl");
list.add("c");
list.add("lisp");
list.add("c#");
int s = list.stream().reduce(0, (x, y) -> x + y.length(), (x, y) -> 0);
System.out.println(s);
s = list.stream().reduce(0, (x, y) -> x + y.length(), (x, y) -> x - y);
System.out.println(s);
s = list.stream().reduce(0, (x, y) -> x + y.length(), (x, y) -> x * y);
System.out.println(s);

}

问题是为什么组合器会影响我的代码。

最佳答案

组合器用于并行流。

但是即使您添加并行,您的代码也可能存在其他问题。他们都违反了一些规则......具体来说:

Additionally, the combiner function must be compatible with the accumulator function; for all u and t, the following must hold

 combiner.apply(u, accumulator.apply(identity, t)) == accumulator.apply(u, t)

你的组合器违反了这一点,所以根据你拥有的 CPU 数量 - 你会得到不同的结果 - 这显然是错误的。

关于java - 为什么组合器不影响输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45345674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com