如何将 Map 中的键转换为小写?
How to convert keys in a Map to lower case?
我有一个地图,其中的键是一个字符串,我需要在使用该地图之前将每个键更改为小写。
我怎样才能在 Scala 中做到这一点?我在想:
var newMap = scala.collection.mutable.Map[String, String]()
data.foreach(d => newMap +=(d._1.toLowerCase -> d._2))
最好的方法是什么?提前致谢。
这里的问题是您试图将小写键添加到可变 Map
中,这只会向其中添加额外的键。最好在这里使用严格的 map
,而不是副作用函数。
val data = scala.collection.mutable.Map[String, String]("A" -> "1", "Bb" -> "aaa")
val newData = data.map { case (key, value) => key.toLowerCase -> value }
如果您真的想要以可变方式进行,那么您必须删除旧密钥。
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)
您的方法可行,但通常在 Scala 中,对于这种转换,首选集合的不可变变体。
您可以使用 Map
class 的 map
方法与以下一行:
val m = Map("a"->"A", "B"->"b1", "b"->"B2", "C"->"c")
m.map(e=>(e._1.toLowerCase,e._2))
我有一个地图,其中的键是一个字符串,我需要在使用该地图之前将每个键更改为小写。
我怎样才能在 Scala 中做到这一点?我在想:
var newMap = scala.collection.mutable.Map[String, String]()
data.foreach(d => newMap +=(d._1.toLowerCase -> d._2))
最好的方法是什么?提前致谢。
这里的问题是您试图将小写键添加到可变 Map
中,这只会向其中添加额外的键。最好在这里使用严格的 map
,而不是副作用函数。
val data = scala.collection.mutable.Map[String, String]("A" -> "1", "Bb" -> "aaa")
val newData = data.map { case (key, value) => key.toLowerCase -> value }
如果您真的想要以可变方式进行,那么您必须删除旧密钥。
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)
您的方法可行,但通常在 Scala 中,对于这种转换,首选集合的不可变变体。
您可以使用 Map
class 的 map
方法与以下一行:
val m = Map("a"->"A", "B"->"b1", "b"->"B2", "C"->"c")
m.map(e=>(e._1.toLowerCase,e._2))