scala – Mutable MultiMap到不可变Map

我创建了一个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并将所有条目插入到新的不可变映射中吗?

解决方法

似乎问题是可变的集合.所以变成不可变的集合起作用:

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()

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...