Scala中如何纯函数式修改Map的键为不同指定字符串
实现方案
直接在map的转换逻辑中对原键做模式匹配,按规则返回对应的新键值对即可,全程为纯函数操作,不会修改原HashMap,也无需声明任何可变变量。
import scala.collection.immutable.HashMap // 原HashMap val originalMap = HashMap(false -> List(20, 15, 20, 17), true -> List(50, 25, 45, 21, 100, 2000, 2100)) // 转换实现 val convertedMap = originalMap.map { case (false, list) => "String1" -> list case (true, list) => "String2" -> list }
如果需要适配更多键的转换规则,也可以预先定义不可变的键映射表来简化逻辑:
val keyMapper = Map(false -> "String1", true -> "String2") val convertedMap = originalMap.map(entry => keyMapper(entry._1) -> entry._2)
如果原Map可能存在规则外的键,可以增加兜底匹配分支避免抛出匹配错误:
val convertedMap = originalMap.map { case (false, list) => "String1" -> list case (true, list) => "String2" -> list case (unknownKey, list) => s"unknown_$unknownKey" -> list }
内容的提问来源于stack exchange,提问作者Max Hager
相关产品推荐
相关产品推荐

