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

Kotlin中Map列表按id分组转为id为键name为值的Map的惯用写法

Kotlin 惯用实现方案

前置准备

如果使用数据类承载列表元素,先定义对应结构:

data class Item(val id: Int, val name: String)

如果输入是List<Map<String, Any>>类型可以跳过这一步,直接用下方对应写法。

核心实现

Kotlin 标准库提供的associate系列扩展函数是集合转Map的最符合语言习惯的方案,无需手动循环写put逻辑:

  1. 元素为数据类的场景
val itemList = listOf(
    Item(1, "a"),
    Item(2, "b"),
    Item(3, "c")
)
// id转字符串作为key,name作为value
val result = itemList.associate { it.id.toString() to it.name }
  1. 元素为Map的场景
val mapList = listOf(
    mapOf("id" to 1, "name" to "a"),
    mapOf("id" to 2, "name" to "b"),
    mapOf("id" to 3, "name" to "c")
)
val result = mapList.associate { 
    (it["id"] as Int).toString() to (it["name"] as String) 
}

补充说明

如果业务场景存在重复id的情况,可以使用重载方法指定冲突策略,避免默认的重复key异常:

// 重复id时保留先出现的name
val result = itemList.associateBy(
    keySelector = { it.id.toString() },
    valueTransform = { it.name }
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:06:08