1
可変セットの2つの可変マップをマージする最も良い方法は何ですか?操作は可換でなければなりません。私が試した事がscala:可変セットの2つの可変マップをマージする最良の方法
がimport scala.collection.mutable
var d1 = mutable.Map[String, mutable.SortedSet[String]]()
var d2 = mutable.Map[String, mutable.SortedSet[String]]()
// adding some elements. Accumulating nimals with the set of sounds they make.
d1.getOrElseUpdate("dog", mutable.SortedSet[String]("woof"))
d2.getOrElseUpdate("cow", mutable.SortedSet[String]("moo"))
d2.getOrElseUpdate("dog", mutable.SortedSet[String]("woof", "bark"))
魔法(つまりは可換である!)...醜いようだ
scala.collection.mutable.Map[String,scala.collection.mutable.SortedSet[String]] =
Map(dog -> TreeSet(bark, woof), cow -> TreeSet(moo))
は基本的に、私はセットをマージする++の定義を上書きしたいです一致するマップキー。 d1 ++ d2は正しい答えを示しますが、d2 ++ d1はそうではありません(++はここでは可換ではありません)。その結果Map
になり、すべてのキーの場合
なぜ変更できますか?マップの1つを他のマップの値で更新しますか? – Kolmar
それについて考えてみると、私はおそらく不変でも使うことができます。私はこれをどのように使用していたのかは分かりません。編集を参照 –