加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Mutable MultiMap到不可变Map

发布时间:2020-12-16 18:03:35 所属栏目:安全 来源:网络整理
导读:我创建了一个MultiMap val ms = new collection.mutable.HashMap[String,collection.mutable.Set[String]]() with collection.mutable.MultiMap[String,String] 在填充了条目之后,必须将其传递给需要Map [String,Set [String]]的函数.直接传递ms不起作用,并
我创建了一个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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读