Comment puis-je convertir immuable.Carte à mutables.Carte en Scala?
Comment puis-je convertir immuable.Carte à mutables.Carte en Scala afin que je puisse mettre à jour les valeurs dans la Carte?
Vous devez vous connecter pour publier un commentaire.
La façon la plus propre serait d'utiliser la
mutable.Map
varargs usine. Contrairement à la++
approche, il utilise leCanBuildFrom
mécanisme, et donc a le potentiel pour être plus efficace si la bibliothèque de code a été écrit pour profiter de cette:Cela fonctionne parce qu'un
Map
peut aussi être vu comme une séquence de Paires.: _*
est un peu comme le type de nom, en disant que le compilateur exactement quel type de signe d'une expression donnée. Vous pouvez la voir ici que de dire "prendre cette séquence, et de le traiter comme un certain nombre de vararg params."O(1)
étapes. Ce regarde pour êtreO(n)
, bien que cela dépend des cours sur la façon intelligente de la mise en œuvre de++
est.O(n)
. Dans la limite que vous tout changer, il doit êtreO(n)
, si vous pourriez essayer de différer la création de la nouvelle copie pour gagner du temps, ou vous double votre temps d'accès en lecture à des révisions à la place de la carte originale. Celui qui fonctionne le mieux dépend probablement sur votre cas d'utilisation.Comment au sujet de l'utilisation de collection.breakOut?
mutable.Map#apply
avec un peu plus passe-partout.Il y a une variante pour créer un vide mutable
Map
qui a des valeurs par défaut prises à partir de l'immuableMap
. Vous pouvez stocker une valeur et remplacer la valeur par défaut à tout moment:Mise en garde (voir le commentaire par Rex Kerr): Vous ne serez pas en mesure de supprimer les éléments venant de l'immuable carte:
De départ
Scala 2.13
, via l'usine de constructeurs appliquée avec.pour(usine)
: