Java在java.util.Map中具有称为compute
的方法,它提供了一种在映射中存在或不存在键时更新map的方法。
scala.collection.mutable.Map 是否提供任何类似的功能?
我已经检查了文档 地图 和 哈希地图 但找不到等效的。
您可以使用update
和getOrElse
,如下所示
val x= scala.collection.mutable.Map("a"->1,"b"->2)
x.update("c",x.getOrElse("c",1)+41)
x.update("a",x.getOrElse("a",1)+41)
mutable.MapLike
特质中定义了getOrElseUpdate
,它完全符合您的要求:
def getOrElseUpdate(key: K, op: ⇒ V): V
如果给定键已在此映射中,则返回关联的值。 否则,从给定的表达式 op 计算值,在 map 中使用键存储并返回该值。
上面的正确答案可以通过为缺少键的情况配置默认值来简化。此外,读取然后更新值可以由一个运算符完成map("key") += value
val map = collection.mutable.Map("a" -> 1, "b" -> 2).withDefaultValue(1)
map("c") += 41
map("a") += 41
println(map)
返回 Map(b -> 2, a -> 42, c -> 42(