首页 > 解决方案 > 在 Kotlin 中:从两个映射中求和一个公共键的两个值的优雅方法是什么?

问题描述

我有一个现有的地图,其中包含简单的整数值。我想通过包含可能键之一的给定映射的值来更新现有映射。

val originMap = mutableMapOf("Foo" to 10, "Bar" to 5)
val additionalMap = mapOf("Foo" to 4)

// questioned logic

assertThat(originMap).containsEntry("Foo", 14)

标签: javadictionarykotlin

解决方案


你可以这样做:

val mergedMap = (originMap.toList() + additionalMap.toList())
        .groupBy({ it.first }, { it.second })
        .map { (key, values) -> key to values.sum() }
        .toMap()

println(mergedMap) // [(Foo, 14), (Bar, 5)]

在这里试试!


推荐阅读