我有以下清单:
INPUT :: 4 5 8 -11 9 5 -7 4 6 -6 -8 -11 80 -32 -56 -15 5 -49
OUTPUT :: 4 9 17 6 15 20 13 17 23 17 9 -2 78 46 -10 -25 -20 -69
我需要计算累计和表的意义
T(n) = T(n) + T(n-1) for n >0;
and
T(0) = T(0)
我想用javastreamapi来计算,这样我就可以用spark来实现大数据计算了。我对java流很幼稚,我尝试过几个表达式,但都不起作用等效的结构化代码应该是这样的:
int[] numbers = {4, 5, 8, -11, 9, 5, -7, 4, 6,-6, -8, -11, 80, -32, -56, -15, 5, -49};
int temp = 0;
for (int i = 0 ; i < numbers.length ; i++) {
temp = temp + numbers[i];
numbers[i] = temp;
}
3条答案
按热度按时间p5fdfcr11#
您可以尝试使用自定义收集器。
uhry853o2#
这里有两种方法。
第一种方法效率很低,因为它基本上使用嵌套循环来累积值。第一个
IntStream
指定值的范围,嵌套的intstream创建一个变量范围,并对从0到该范围末尾的值求和。这个方法更符合传统的方法。对单个0数组进行流式处理,然后使用该数组累积值的连续和。
两种打印
但你不能做得比这更好。
底线是坚持你所拥有的。
wh6knrhe3#
试试这个。
输出: