在Scala中将Map [String,String]转换为Map [String,Int]

时间:2014-03-28 22:04:00

标签: scala map

我有一个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]

2 个答案:

答案 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,以使编译器满意。