在scala.collection.mutable.Map中Map.compute的等效功能是什么

时间:2018-06-28 18:16:29

标签: scala scala-collections

Java在java.util.Map中具有称为compute的方法,该方法提供了一种在地图中存在或不存在密钥时更新地图的方法。

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

我已经检查了文档MapHashMap,但是找不到等效的文档。

3 个答案:

答案 0 :(得分:2)

您可以按以下方式使用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)

答案 1 :(得分:1)

mutable.MapLike特性中定义了getOrElseUpdate,它确实可以满足您的需求:

def getOrElseUpdate(key: K, op: ⇒ V): V
  

如果给定键已在此映射中,则返回关联的值。   否则,从给定表达式op计算值,将键存储在map中并返回该值。

答案 2 :(得分:1)

通过为缺少键的情况配置默认值,可以简化上述正确答案。另外,可以由一位操作员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)