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 全体をコピーして要素を追加するのはコストがかかるようです。

ベクターに要素を追加する最良の (最速の) 方法は何ですか?

4

3 に答える 3

9

不変の Vector への連結は O(logN) です。この紙を見て、それがどのように行われるかを確認してください。

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

于 2013-09-10T16:29:23.847 に答える
6

多くの追加を行う場合は、一定時間の追加を保証する Queue を使用する必要があります。コレクションの時間の複雑さについては、このチート シートを参照してください。

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 に答える