首页 > 解决方案 > 函数式编程:从现有 Map 中获取具有更改值的新 Map

问题描述

我有一张像

val strMap = Map[String, String]("a" -> "a1", "b" -> "b1") // Map(a -> a1, b -> b1)

我想根据strMap中的值创建另一个具有相同键但值不同的映射。例如

case class Data(data: String) {}
var dataMap = scala.collection.mutable.Map[String, Data]()
strMap.foreach (keyVal => {dataMap(keyVal._1) = Data(keyVal._2)})
val dataMapToUse = dataMap.toMap // Map(a -> Data(a1), b -> Data(b1))

但是以命令式风格写这个会导致像创建“var dataMap”这样的问题,尽管我想获得不可变的地图。因此,我必须调用toMap才能得到相同的结果。如何在函数式编程中实现相同的目标?

斯卡拉版本:2.11

标签: scalafunctional-programming

解决方案


为什么不简单地使用,

val dataMapToUse = strMap.map{case(k,v) =>(k -> Data(v))}

推荐阅读