【发布时间】:2018-06-15 04:57:11
【问题描述】:
我有一个“dirtyMap”,它是不可变的。Map[String, collection.mutable.Set[String]]。我想将dirtyMap 转换为不可变的Map[String, Set[String]]。你能否让我知道如何做到这一点。我尝试了几种没有产生积极结果的方法
方法一:使用地图功能
dirtyMap.toSeq.map(e => {
val key = e._1
val value = e._2.to[Set]
e._1 -> e._2
}).toMap()
我收到语法错误
方法二:使用foreach
dirtyMap.toSeq.foreach(e => {
val key = e._1
val value = e._2.to[Set]
e._1 -> e._2
}).toMap()
无法将 toMap 应用于 foreach 的输出
免责声明:如果你看不出来,我是 Scala 菜鸟。
更新:当我从 toMap() 函数中删除括号时,方法 1 有效。但是,以下是一个优雅的解决方案
dirtyMap.mapValues(v => v.toSet)
感谢 Gabriele 提供了很好的解释。也感谢 Duelist 和 Debojit 的回答
【问题讨论】:
-
在方法1中删除
toMap之后的括号也有助于消除语法错误。