比如说我将一个列表映射到下一个列表,并且在地图中我想用列表中的当前项目与列表中的下一个项目进行一些计算。
def someFunc(L: List[Integer]) : List[Integer] = {
L.collect {
case k if (k != L(L.length-1)) //do something with k and the next element
}
}
一个简单的例子是我想要浏览这个整数列表,并将每个数字映射到列表中的下一个数字除以它。
E.g。 (1,2,3) - > (2 / 1,3 / 2)==(2,1.5)
我曾经考虑过使用indexOf这样做,但我不认为必须搜索当前元素的整个列表是有效的,即使我已经遍历了列表中的每个元素。
答案 0 :(得分:4)
使用.sliding
:
scala> val l = List(1, 2, 3)
l: List[Int] = List(1, 2, 3)
scala> l.sliding(2).toList
res0: List[List[Int]] = List(List(1, 2), List(2, 3))
scala> l.sliding(2).collect { case x::y::Nil if y != 0 => x / y.toDouble }.toList
res1: List[Double] = List(0.5, 0.6666666666666666)