Nic*_*ell 8 java java-8 java-stream
我的程序有这一行:
Function<String, Integer> f = (String s) -> s.chars().reduce(0, (a, b) -> 2 * a + b);
Run Code Online (Sandbox Code Playgroud)
传递给reduce的函数不是关联的.Reduce的文档说传递的函数必须是关联的.
我如何将其重写为不破坏reduce合同的表达式?
在当前的实现和IFF下,您将不会使用并行 -您现在拥有的是安全的。显然,如果您对这些免责声明表示满意。
或者,您显然可以使用for循环创建该函数:
Function<String, Integer> f = s -> {
int first = s.charAt(0) * 2 + s.charAt(1);
int total = first;
for (int x = 1; x < s.length() - 1; x++) {
total = total * 2 + s.charAt(x + 1);
}
return total;
};
Run Code Online (Sandbox Code Playgroud)