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 回答