【发布时间】:2020-05-08 23:56:54
【问题描述】:
我正在尝试将 Scala HashMap 的键与值列表进行比较,如果列表中不存在该键,我需要将 Map 的值更新为默认值 -1。
例如: 考虑以下情况:
列表:
val pos = List("100","110")
地图:
scala> idSizeMap
res2: scala.collection.immutable.Map[String,Long] = Map(100 -> 4240070722, 110 -> 611884363, 120 -> 1825405636, 130 -> 2194234, 72 -> 3685020648)
使用 filterKeys 我可以进行交叉操作
scala> val result = idSizeMap.filterKeys(pos.contains)
result: scala.collection.immutable.Map[String,Long] = Map(100 -> 4240070722, 110 -> 611884363)
但相反,我还希望旧地图中的键具有默认值 -1。 预期输出:
Map(100 -> 4240070722, 110 -> 611884363, 120 -> -1, 130, -1, 72 -> -1)
我还尝试了以下操作,与 filterKeys 执行相同的操作:
var similarItems = Map[String, Long]()
similarItems: scala.collection.immutable.Map[String,Long] = Map()
scala> for (eachpos <- pos) {
| if (!eidSizeMap.contains(eachpos)) similarItems += (eachpos -> -1)
| else
| similarItems += (eachpos -> eidSizeMap(eachpos))
| }
scala> similarItems
res8: scala.collection.immutable.Map[String,Long] = Map(100 -> 4240070722, 110 -> 611884363)
实现这一目标的最合适的 Scala 方式是什么?
【问题讨论】:
标签: scala dictionary hadoop data-science