我有一个Map,其中键是一个String,值是Int,但表示为String。
scala> val m = Map( "a" -> "1", "b" -> "2", "c" -> "3" )
m: scala.collection.immutable.Map[String,String] = Map(a -> 1, b -> 2, c -> 3)
现在我想将其转换为Map[String, Int]
答案 0 :(得分:10)
scala> m.mapValues(_.toInt)
res0: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 2, c -> 3)
答案 1 :(得分:5)
如Brian的回答所示,mapValues
是最好的方法。
你可以使用模式匹配实现相同的效果,如下所示:
m.map{ case (k, v) => (k, v.toInt)}
并且在其他情况下很有用(例如,如果您还想更改密钥)。
请记住,您对Map
中的每个条目进行了模式匹配,表示为元组2,而不是整个Map
。
您还必须在{}
语句周围使用花括号case
,以使编译器满意。