在Scala中,将一个元素添加到列表中的最佳方法是什么,同时确保列表始终包含最新的n个元素。
因此,如果列表为(2, 3, 4, 5, 6)
且n = 5,则添加6应为list = list ::: List(6)
list = list.takeRight(5)
。
一种可能的方法是:
{{1}}
有没有更好的方法?此外,是否有更好的数据结构来维护这种频繁变化的集合?
答案 0 :(得分:1)
听起来固定尺寸Circular Buffer可满足您的需求。我认为apache commons提供了一些实现。
使用List
的scala解决方案可能是:
scala> def dropHeadAndAddToList[T](obj: T, list: List[T]):List[T] = {
list.drop(1) :+ obj
}
dropHeadAndAddToList: [T](obj: T, list: List[T])List[T]
scala> val a = List(1,2,3,4,5)
a: List[Int] = List(1, 2, 3, 4, 5)
scala> dropHeadAndAddToList(6, a)
res0: List[Int] = List(2, 3, 4, 5, 6)