How to convert keys in a Map to lower case?
The problem here is that you're trying to add the lower-cased keys to the mutable Map
, which is just going to pile additional keys into it. It would be better to just use a strict map
here, rather than a side-effecting function.
val data = scala.collection.mutable.Map[String, String]("A" -> "1", "Bb" -> "aaa")
val newData = data.map { case (key, value) => key.toLowerCase -> value }
If you really want to do it in a mutable way, then you have to remove the old keys.
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)
Your approach would work, but in general in Scala for this kind of transformation the immutable variants of the collections are preferred.
You can use the map
method of the Map
class with the following one liner:
val m = Map("a"->"A", "B"->"b1", "b"->"B2", "C"->"c")
m.map(e=>(e._1.toLowerCase,e._2))