在Java中,我如何使用流来计算每个数字之间的差异?

问题描述 投票:0回答:1

我有一个整数/双精度数列表。我想计算每个元素与其下一个元素之间的差异。然后将差异加在一起。例如(伪代码):

List<Integer> nums = {1, 2, 3, 1, -5}

在这种情况下,差异应为“ -1”,“-1”,“ 2”和“ 6”,加在一起应为“ 6”。但是forEach()或其他操作不应在“列表”类型上使用,我应该使用像

nums.stream()...

这样的事情就完成了操作。那可能吗?如果没有,最简单的方法应该是什么?例如,我尝试过

stream().reduce(...)

但实际上不知道如何进行。非常感谢您的帮助!

java algorithm stream inputstream
1个回答
0
投票

您可以创建索引的IntStream

IntStream.range(0,nums.size()-1)
         .map(i -> nums.get(i) - nums.get(i+1))
         .sum();

当然,您还可以观察到所有差异的总和是第一个元素减去最后一个元素。

© www.soinside.com 2019 - 2024. All rights reserved.