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

Kotlin中如何扁平化HashMap并高效获取键列表?

优化HashMap集合的键列表获取性能

你的代码之所以慢,核心是做了两次完整遍历:先把所有Map的Entry都收集成中间集合,再遍历这个集合提取键,而且Entry本身包含键值对,占用的内存比单独的键更多,额外增加了开销。

以下是几种更高效的实现方式:

1. 一步完成扁平化与键提取(最简洁)

直接利用每个Map的keys属性,通过flatMap一次遍历完成合并:

val keys = data.flatMap { it.keys }

这种方式只需要遍历一次所有的Map,直接提取每个Map的键集合并扁平化,避免了中间的Entry集合,内存开销和遍历次数都减半。

2. 手动构建列表(性能最优)

如果追求极致性能,用buildList直接往目标列表中添加键,减少中间对象的创建:

val keys = buildList {
    data.forEach { map ->
        addAll(map.keys)
    }
}

buildList会预先估算容量(如果能确定的话),直接在底层数组中添加元素,避免了flatMap可能产生的临时Iterable对象,适合数据量较大的场景。

特殊场景:如果data是单个HashMap

如果你的data其实是单个HashMap而非多个Map的集合,那根本不需要flatMap,直接取键转列表即可:

val keys = data.keys.toList()

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:50:28