我有一个整数/双精度数列表。我想计算每个元素与其下一个元素之间的差异。然后将差异加在一起。例如(伪代码):
List<Integer> nums = {1, 2, 3, 1, -5}
在这种情况下,差异应为“ -1”,“-1”,“ 2”和“ 6”,加在一起应为“ 6”。但是forEach()或其他操作不应在“列表”类型上使用,我应该使用像
nums.stream()...
这样的事情就完成了操作。那可能吗?如果没有,最简单的方法应该是什么?例如,我尝试过
stream().reduce(...)
但实际上不知道如何进行。非常感谢您的帮助!
您可以创建索引的IntStream
:
IntStream.range(0,nums.size()-1)
.map(i -> nums.get(i) - nums.get(i+1))
.sum();
当然,您还可以观察到所有差异的总和是第一个元素减去最后一个元素。