如何将地图转换为科特林

时间:2020-09-15 23:05:27

标签: kotlin java-stream

如何将Map<String, ArrayList<Int>>转换为Map<String, Int>

我的对象如下:

val mapOfItems = mapOf("x" to listOf(1, 2), "y" to listOf(1, 3), "z" to listOf(2, 3))

我想要一个这样的对象:

val mapOfSummedItems = mapOf("x" to 3, "y" to 4, "z" to 5)

我尝试过:

mapOfItems.map { (key, value) -> SummedItems(key, value.sum()) }
                .groupBy { it.key }

data class SummedItems(val key: String, val sum: Int)

那不能给我我想要的Map<String, ArrayList<SummedItems>>

1 个答案:

答案 0 :(得分:3)

.map()上的

Map生成List。虽然可以将其设置为List<Pair>,然后使用associate*运算符返回到Map,但也可以直接映射值:

mapOfItems.mapValues { it.value.sum() }