102 votes

Comment puis-je convertir immutable.Map en mutable.Map dans Scala?

Comment puis-je convertir immutable.Map en mutable.Map dans Scala afin de pouvoir mettre à jour les valeurs dans Map?

136voto

Kevin Wright Points 31665

Le moyen le plus propre serait d’utiliser l’usine mutable.Map varargs. Contrairement à l'approche ++ , cette méthode utilise le mécanisme CanBuildFrom et a donc le potentiel d'être plus efficace si le code de la bibliothèque était écrit pour en tirer parti:

 val m = collection.immutable.Map(1->"one",2->"Two")
val n = collection.mutable.Map(m.toSeq: _*) 
 

Cela fonctionne car un Map peut également être vu comme une séquence de paires.

46voto

Rex Kerr Points 94401
val myImmutableMap = collection.immutable.Map(1->"one",2->"two")
val myMutableMap = collection.mutable.Map() ++ myImmutableMap

4voto

ymnk Points 568

Pourquoi ne pas utiliser collection.breakOut?

 import collection.{mutable, immutable, breakOut}
val myImmutableMap = immutable.Map(1->"one",2->"two")
val myMutableMap: mutable.Map[Int, String] = myImmutableMap.map(identity)(breakOut)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X