【发布时间】:2021-06-16 22:17:23
【问题描述】:
我创建了一个mutableMap<String, Int> 并为0 创建了一个记录“示例”。我怎样才能增加价值,例如到0 + 3 ?
【问题讨论】:
-
从地图中获取值,增加它,为地图设置新值。
标签: kotlin
我创建了一个mutableMap<String, Int> 并为0 创建了一个记录“示例”。我怎样才能增加价值,例如到0 + 3 ?
【问题讨论】:
标签: kotlin
您可以使用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)
【讨论】:
Map.compute 也可能会有所帮助...或者一般看看Map-interface那么
我是怎么做的:
val map = mutableMapOf<String, Int>()
map[key] = (map[key] ?: 0) + 1
【讨论】:
如果 API 级别大于 23,您可以使用 getOrDefault。否则,您可以使用 elvis 运算符
val map = mutableMapOf<String,Int>()
val value = map["Example"] ?: 0
map["Example"] = value + 3
【讨论】:
你可以定义
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)
【讨论】: