添加元素到向量的末尾

时间:2013-09-10 16:24:43

标签: scala

Scaladocs解释如何将元素添加到Vector。

def :+(elem: A): Vector[A]
[use case] A copy of this vector with an element appended.

示例:

scala> Vector(1,2) :+ 3
res12: scala.collection.immutable.Vector[Int] = Vector(1, 2, 3)

对于大型集合,复制整个Vector,然后向其添加元素似乎很昂贵。

向Vector添加元素的最佳(最快)方法是什么?

3 个答案:

答案 0 :(得分:9)

与不可变Vector的连接是O(logN)。看看这篇论文,看看它是如何完成的。

http://infoscience.epfl.ch/record/169879/files/RMTrees.pdf

答案 1 :(得分:6)

如果你要做很多追加,你应该使用一个Queue,因为它可以保证不断添加时间。有关集合的时间复杂性的信息,您可以参考此备忘单。

http://www.scala-lang.org/docu/files/collections-api/collections_40.html

答案 2 :(得分:2)

在Scala中追加向量需要有效的恒定时间。在复制许多数据结构的意义上复制向量,而不是将所有元素复制到新向量中。有关集合的时间复杂性的更多信息,请参阅coltfred提供的链接:

http://www.scala-lang.org/docu/files/collections-api/collections_40.html