我具有这样的地图结构:
val map = mutable.Map[String, Double].empty
比起我这样在地图上增加价值
map("apple") = 10.34
但是对于苹果的下一个价值,我想添加到10.34,所以我这样做
val oldVal = map("apple")
map("apple) = oldVal + 2.34
有没有更快的方法可以做到这一点?因为我必须阅读大文件,并且希望在地图上快速更新。谢谢您的建议。
答案 0 :(得分:1)
val map = mutable.Map.empty[String, Double].withDefaultValue(0.0)
//put new
map("apple") = 10.34
//update existing
map("apple") += 2.34
//update not existing
map("orange") += 0.34
答案 1 :(得分:0)
使用Scala时,通常最好避免使用可变对象。这是为了避免在Scala中相当简单的并发问题。
如果我正确理解了您的问题,则您有一张要使用值更新的地图。从文件读取时,您可以创建一个新地图,并添加以下值:
val m = Map("a" -> 1, "b" -> 2)
val other = Map("a" -> 3, "c" -> 4) // created from a file
现在,您可以使用第二张地图中的值更新第一张地图,以获取此信息:
val updated = m.map{ case (k, v) => { if(other.contains(k)) {(k, v + other.get(k).get)} else (k,v) }}
现在您可以使用更新来执行其他操作了。