获取列表的最后两个元素而无需使用反向方法? [斯卡拉]

时间:2018-10-15 08:43:16

标签: scala

如何在Scala中使用反向方法获得列表的最后两个元素? (仅第一,第二,尾巴,头部)。我想像“ list.tail.head”那样输入sth,但是它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

只需使用takeRight

List(1, 2, 3).takeRight(2)
res0: List[Int] = List(2, 3)

答案 1 :(得分:2)

我假设您不想使用诸如reverse,takeRight等之类的东西

import scala.annotation.tailrec
@tailrec
def take2[T](l: List[T]): Option[List[T]] = l match {
  case Nil | _ :: Nil => None
  case _ :: _ :: Nil => Some(l)
  case _ :: xs => take2(xs)
}

如果您的算法需要快速访问集合中的最后两个元素,请考虑使用List以外的其他内容。