12

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 的最佳(最快)方法是什么?

4

3 回答 3

9

连接到不可变向量的时间为 O(logN)。看看这篇论文,看看它是如何完成的。

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

于 2013-09-10T16:29:23.847 回答
6

如果您要进行大量追加,则应使用队列,因为它可以保证恒定的时间追加。有关集合的时间复杂度的信息,您可以参考此备忘单。

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

于 2013-09-10T16:36:08.017 回答
2

在 Scala 中附加到向量实际上需要恒定的时间。向量被复制的意义在于它的许多数据结构被重用,而不是所有元素都被复制到一个新的向量中。有关集合时间复杂度的更多信息,请参阅 coltfred 提供的链接:

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

于 2017-09-11T17:23:34.393 回答