我想检查Map中是否存在键,如果存在,我想在值上增加1。如果不存在,我想在Map上添加一个值等于1的新项目。
'功能方式'去做吧?我用find和fold写了它,但它看起来有点奇怪。
val updatedScore = currentScores
.find(s => s._1.equals(score))
.fold(score -> 1)(s => s._1 -> (s._2 + 1))
val newScores = currentScores + updatedScore
任何人都有更好的解决方案吗?
答案 0 :(得分:8)
你可以这样做:
val newScores = currentScores + (score -> (currentScores.getOrElse(score, 0) + 1))
答案 1 :(得分:1)
val ret: mutable.Map[Int, Int] = mutable.Map[Int, Int]().withDefaultValue(1)
val arg = 5
ret.update(arg, ret(5)+1)
答案 2 :(得分:0)
val updatedScore = score -> (currentScores(score)+ 1)
val newScores= currentScores - score + newScore
答案 3 :(得分:0)
如果您的目标是计算,请考虑使用MultiMap,即:http://lampwww.epfl.ch/~hmiller/scaladoc/library/scala/collection/mutable/MultiMap.html。由于您累积了计数,因此似乎不是避免副作用的理由。