我创建了一个mutableMap<String, Int>
,并为0
创建了一个记录“ Example”。我如何增加价值到0 + 3
吗?
答案 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)