4

私は作成しますMultiMap

val ms =
  new collection.mutable.HashMap[String, collection.mutable.Set[String]]()
  with collection.mutable.MultiMap[String, String]

これは、エントリが入力された後、を期待する関数に渡される必要がありますMap[String, Set[String]]。直接渡すmsことは機能せず、を介して不変のマップに変換しようとしますtoMap

ms.toMap[String, Set[String]]

収量

Cannot prove that (String, scala.collection.mutable.Set[String]) <:< (String, Set[String]).

これは、すべてのエントリを手動で繰り返してms新しい不変のマップに挿入することなく解決できますか?

4

2 に答える 2

5

問題はミュータブルセットのようです。したがって、不変セットに変換すると機能します。

scala> (ms map { x=> (x._1,x._2.toSet) }).toMap[String, Set[String]]
res5: scala.collection.immutable.Map[String,Set[String]] = Map()

または、Daniel Sobral の提案に従うと、さらに良い結果が得られます。

scala> (ms mapValues { _.toSet }).toMap[String, Set[String]]
res7: scala.collection.immutable.Map[String,Set[String]] = Map()
于 2012-07-08T21:59:42.533 に答える
2

を使ってアローンmapValuesを変えてみてはいかがでしょうか?Set

于 2012-07-08T21:57:20.913 に答える