以函数方式计算列表中的差异

Eri*_*agt 0 java functional-programming kotlin

我有一个绝对值列表(例如:10、50、30),我想以功能方式将其转换为这些数字之间的差异列表。因此,给定输入 as 10, 50, 30,我希望结果是:40, -20

对于上下文:我当前的实现只是一个 for 循环,它跟踪先前的值,计算差异,并将其添加到一个新列表中,但我想知道如何以更实用的方式解决这个问题?(我正在使用 Kotlin,但 Java 中的解决方案也可以)

Swe*_*per 7

使用zipWithNext.

您传入一个带有 2 个参数的 lambda。zipWithNext将遍历列表并将每对元素传递给您的 lambda。要计算差异,只需减去:

val list = listOf(10, 50, 30)
val result = list.zipWithNext { a, b -> b - a }
Run Code Online (Sandbox Code Playgroud)