我知道有关类似的问题。他们不帮助我 - 如果没有现有密钥,代码不起作用。不错的方式来添加数字元素在斯卡拉地图如果密钥存在或插入新的元素它不是
我只需要一些很好的方法来将Map添加到现有的键(如果它存在)或将NEW键(如果map不包含适当的键)添加到现有的键。
下面的代码工作,但我不喜欢它:
val a = collection.mutable.Map(("k1" -> 1), ("k2" -> 5))
val key = "k1"
val elem = a.get(key)
if (elem == None) {
a += ("k5" -> 200)
} else {
a.update(key, elem.get + 5)
}
任何一点更好的? 当前的Scala版本是2.10.4,我目前无法切换到2.11。 可变映射不是100%的限制,但是是首选。
这里是,例如,similar question,但我也需要考虑不存在的钥匙的情况。至少我们应该了解a.get(key)
可能是None
或者添加一些更好的方法。好主意是|+|
但我想保持基本的Scala 2.10.x.
可能现在它是最好的选择。但是为什么Scala复杂的容器库不能提供开箱即用的简单东西 - 使用key和value可以增加值(如果不存在任何键)或者使用当前值和我的值都可以做些什么?下次肯定会把这个至少包括到公司的图书馆(魔鬼)中。 – 2015-02-07 21:16:52
这是非常奇特的恕我直言:如果一个**其他**不存在,添加一个键不是一个真正的主流行为 – 2015-02-07 21:21:47
为什么?例如,我想通过key来形成聚合地图,我需要逐个添加元素,所以像'reduce()'这样的东西不能被使用? – 2015-02-07 21:32:14