什么是 scala.collection.mutable.Map 中 Map.compute 的等效函数



Java在java.util.Map中具有称为compute的方法,它提供了一种在映射中存在或不存在键时更新map的方法。

scala.collection.mutable.Map 是否提供任何类似的功能?

我已经检查了文档 地图 和 哈希地图 但找不到等效的。

您可以使用updategetOrElse,如下所示

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(

最新更新