Mal*_*off 4 scala map set immutability multimap
我创造了一个 MultiMap
val ms =
new collection.mutable.HashMap[String, collection.mutable.Set[String]]()
with collection.mutable.MultiMap[String, String]
Run Code Online (Sandbox Code Playgroud)
在填充了条目之后,必须将其传递给期望a的函数Map[String, Set[String]]
.ms
直接传递不起作用,并试图通过它将其转换为不可变的地图toMap
ms.toMap[String, Set[String]]
Run Code Online (Sandbox Code Playgroud)
产量
Cannot prove that (String, scala.collection.mutable.Set[String]) <:< (String, Set[String]).
Run Code Online (Sandbox Code Playgroud)
这可以解决而无需手动迭代ms
并将所有条目插入到新的不可变映射中吗?
似乎问题是可变的集合.所以变成不可变的集合起作用:
scala> (ms map { x=> (x._1,x._2.toSet) }).toMap[String, Set[String]]
res5: scala.collection.immutable.Map[String,Set[String]] = Map()
Run Code Online (Sandbox Code Playgroud)
或者更好地遵循Daniel Sobral的建议:
scala> (ms mapValues { _.toSet }).toMap[String, Set[String]]
res7: scala.collection.immutable.Map[String,Set[String]] = Map()
Run Code Online (Sandbox Code Playgroud)