您可以使用原子序号执行此操作。例如:
import java.util.concurrent.atomic.AtomicLong;import java.util.stream.IntStream;import java.util.stream.LongStream;public class Accumulator { public static LongStream toCumulativeSumStream(IntStream ints){ AtomicLong sum = new AtomicLong(0); return ints.sequential().mapToLong(sum::addAndGet); } public static void main(String[] args){ LongStream sums = Accumulator.toCumulativeSumStream(IntStream.range(1, 5)); sums.forEachOrdered(System.out::println); }}输出:
13610
我使用Long来存储总和,因为两个int相加的总和完全有可能
Integer.MAX_VALUE,而long的溢出几率较小。



