如何在确保列表包含scala中的最新n个元素的同时向List添加元素

时间:2015-09-30 10:42:24

标签: list scala

在Scala中,将一个元素添加到列表中的最佳方法是什么,同时确保列表始终包含最新的n个元素。

因此,如果列表为(2, 3, 4, 5, 6)且n = 5,则添加6应为list = list ::: List(6) list = list.takeRight(5)

一种可能的方法是:

{{1}}

有没有更好的方法?此外,是否有更好的数据结构来维护这种频繁变化的集合?

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)