Kotlin-如何增加可变地图的价值
我想在Kotlin laguage中的mutableMap的特定项值中添加1。 下面是我做的。 有没有办法使这段代码变得简单Kotlin-如何增加可变地图的价值,kotlin,hashmap,Kotlin,Hashmap,我想在Kotlin laguage中的mutableMap的特定项值中添加1。 下面是我做的。 有没有办法使这段代码变得简单 map[1] = map[1]?.let {it -> it + 1 } ?: 1 也许你可以使用: 您可以通过在处理null之后进行加法来简化这一点: map[1] = (map[1] ?: 0) + 1 如果您经常这样做,可以将其添加为扩展函数,例如: fun <T> MutableMap<T, Int>.increment(key:
map[1] = map[1]?.let {it -> it + 1 } ?: 1
也许你可以使用:
您可以通过在处理null之后进行加法来简化这一点:
map[1] = (map[1] ?: 0) + 1
如果您经常这样做,可以将其添加为扩展函数,例如:
fun <T> MutableMap<T, Int>.increment(key: T, defaultValue: Int = 0) {
this[key] = (this[key] ?: defaultValue) + 1
}
您可以将其扩展为加减除1以外的数字。 (虽然在这种情况下,您可能需要更改函数名。)我认为没有一种干净的方法可以做到这一点,因为我们总是要处理密钥不存在的情况 您可以使用JDK。这将添加一个值为
1
的新键(如果该键不存在)
map.merge(1, 1, Int::plus)
但这感觉不太像我。因此,您可以将其包装在扩展函数中:
fun MutableMap<Int, Int>.increment(key: Int) = merge(key, 1, Int::plus)
输出:
{1=2}
{1=3}
{1=3, 2=1}
map.merge(1, 1, Int::plus)
fun MutableMap<Int, Int>.increment(key: Int) = merge(key, 1, Int::plus)
fun main() {
val map = mutableMapOf(1 to 1)
map.merge(1, 1, Int::plus)
println(map)
map.increment(1)
println(map)
map.increment(2)
println(map)
}
{1=2}
{1=3}
{1=3, 2=1}