Java在java.util.Map中具有称为compute
的方法,该方法提供了一种在地图中存在或不存在密钥时更新地图的方法。
scala.collection.mutable.Map是否提供任何类似的功能?
答案 0 :(得分:2)
您可以按以下方式使用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)
答案 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)