Java 8 中的 reduce 累加器是否允许修改其参数?
2022-09-03 02:30:41
在Java 8中,Stream有一个方法 reduce:
T reduce(T identity, BinaryOperator<T> accumulator);
是否允许累加器运算符修改其任一参数?我推测不是,因为JavaDoc说累加器应该是NonInterfering,尽管所有的例子都谈到修改集合,而不是修改集合的元素。
所以,举一个具体的例子,如果我们有
integers.reduce(0, Integer::sum);
并假设在一段时间内,可变的,是否允许通过向其添加(就地)其第二个参数的值来修改其第一个参数?Integer
sum
我推测不是,但我也想举个例子来说明这种干扰会导致问题的地方。