L'ajout de l'Élément à la Fin du Vecteur
Scaladocs expliquer comment ajouter un élément à un Vecteur.
def :+(elem: A): Vector[A]
[use case] A copy of this vector with an element appended.
Exemple:
scala> Vector(1,2) :+ 3
res12: scala.collection.immutable.Vector[Int] = Vector(1, 2, 3)
Pour une collection, il semble cher pour copier l'intégralité d'un Vecteur, puis ajoutez un élément.
Quelle est la meilleure(la plus rapide) pour ajouter un élément à un Vecteur?
OriginalL'auteur Kevin Meredith | 2013-09-10
Vous devez vous connecter pour publier un commentaire.
Concaténation de immuable Vecteur est O(logN). Jetez un oeil à cet article pour voir comment c'est fait.
http://infoscience.epfl.ch/record/169879/files/RMTrees.pdf
avez-vous lu le livre? 6. Conclusions "de La RRB-Arbre vectoriel fournit une solution viable extension de l'existant 32-façon immuable vecteur utilisé en Clojure et Scala pour fournir O(logN) concaténation et se divise, tout en maintenant les coûts de base liés aux autres opérations. Pour des raisons pratiques, ils peuvent être considérés comme constants."
OriginalL'auteur David Holbrook
Si vous allez faire beaucoup de ajoute que vous devriez utiliser une File d'attente car il garantit la constante de temps de l'ajouter. Pour plus d'informations sur la complexité du temps des collections, vous pouvez vous référer à cette feuille de triche.
http://www.scala-lang.org/docu/files/collections-api/collections_40.html
OriginalL'auteur coltfred
Ajout d'un vecteur dans Scala prend effectivement constante de temps. Le vecteur est copié dans le sens que beaucoup de ses structures de données sont réutilisées, pas dans le sens que tous les éléments sont copiés dans un nouveau vecteur. Voir le lien fourni par coltfred pour plus d'informations sur le temps de la complexité des collections:
http://www.scala-lang.org/docu/files/collections-api/collections_40.html
OriginalL'auteur ski629