pla*_*oom 8 collections dictionary scala
我有一个地图,其中键是一个字符串,我需要在使用此映射之前将每个键更改为小写.
我怎么能在Scala中做到这一点?我想的是:
var newMap = scala.collection.mutable.Map[String, String]()
data.foreach(d => newMap +=(d._1.toLowerCase -> d._2))
Run Code Online (Sandbox Code Playgroud)
它的最佳方法是什么?提前致谢.
这里的问题是你正在尝试将低位的密钥添加到mutable中Map,这只是将额外的密钥堆积到其中.最好在map这里使用严格,而不是副作用函数.
val data = scala.collection.mutable.Map[String, String]("A" -> "1", "Bb" -> "aaa")
val newData = data.map { case (key, value) => key.toLowerCase -> value }
Run Code Online (Sandbox Code Playgroud)
如果你真的想以可变的方式做到这一点,那么你必须删除旧密钥.
data.foreach { case (key, value) =>
data -= key
data += key.toLowerCase -> value
}
scala> data
res79: scala.collection.mutable.Map[String,String] = Map(bb -> aaa, a -> 1)
Run Code Online (Sandbox Code Playgroud)