You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何合并Map?求优雅实现方案(新手求助)

Kotlin合并多个Map的优雅实现

首先纠正代码里的一个小细节:Kotlin中整数类型是大写的Int,不是小写的int,所以foo和bar的方法签名应该修正为Map<String, Int>。

针对你的需求,这里有几种优雅的方式可以把List<Map<String, Int>>合并成一个单独的Map,然后调用bar:

方式一:使用fold累积合并(推荐)

fold是处理累积操作的标准函数,我们可以从空Map开始,逐个合并每个foo返回的小Map:

li.map { foo(it) }
    .fold(emptyMap<String, Int>()) { accumulated, current -> accumulated + current }
    .let { bar(it) }

如果想更高效,可以省略中间的map步骤,直接在fold里调用foo:

li.fold(emptyMap<String, Int>()) { acc, s -> acc + foo(s) }
    .let { bar(it) }

方式二:用flatMap展开键值对再转Map

这个思路是先把所有小Map的键值对都提取出来拼成一个列表,再将列表转为Map:

li.flatMap { foo(it).entries }
    .toMap()
    .let { bar(it) }

以上两种方式最终都会生成mapOf("A" to 1, "B" to 2, "C" to 3),满足调用bar的要求,且不需要修改foo或bar函数。

内容的提问来源于stack exchange,提问作者Ali-Ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:22:40