微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐