增加可变地图的价值

时间:2018-12-18 05:31:27

标签: kotlin

我创建了一个mutableMap<String, Int>,并为0创建了一个记录“ Example”。我如何增加价值到0 + 3吗?

4 个答案:

答案 0 :(得分:6)

您可以使用getOrDefault 函数以获取旧值或0,然后添加新值并将其分配回地图。

val map = mutableMapOf<String,Int>()
map["Example"] = map.getOrDefault("Example", 0) + 3

或使用标准Map界面中的merge功能。

val map = mutableMapOf<String,Int>()
map.merge("Example", 3) {
    old, value -> old + value
}

或更紧凑:

map.merge("Example",3, Int::plus)

答案 1 :(得分:1)

我是怎么做的:

val map = mutableMapOf<String, Int>()

map[key] = (map[key] ?: 0) + 1

答案 2 :(得分:0)

如果API级别大于23,则可以使用getOrDefault。否则,可以使用elvis运算符

val map = mutableMapOf<String,Int>()
val value = map["Example"] ?: 0
map["Example"] = value + 3

答案 3 :(得分:0)

您可以定义

fun <T> MutableMap<T, Int>.inc(key: T, more: Int = 1) = merge(key, more, Int::plus)

所以你可以这样

map.inc("Example",3)
map.inc("Example")
otherMap.inc(otherObject)