快速更新地图价值的方法

时间:2019-05-04 18:22:41

标签: algorithm scala

我具有这样的地图结构:

val map = mutable.Map[String, Double].empty

比起我这样在地图上增加价值

map("apple") = 10.34

但是对于苹果的下一个价值,我想添加到10.34,所以我这样做

val oldVal = map("apple")
map("apple) = oldVal + 2.34

有没有更快的方法可以做到这一点?因为我必须阅读大文件,并且希望在地图上快速更新。谢谢您的建议。

2 个答案:

答案 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) }}

现在您可以使用更新来执行其他操作了。

相关问题