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

如何在Kotlin中通过指定Key替换List<Map<String,Any>>映射值

在Kotlin中实现指定列表映射替换的方案

原始数据(#1)

val originalList: List<Map<String, Any>> = listOf(
    mapOf(
        "item_id" to "1234",
        "item_name" to "MY ITEM 1",
        "origin_item_id" to "NULL"
    ),
    mapOf(
        "item_id" to "9999",
        "item_name" to "MY ITEM 5",
        "origin_item_id" to "NULL"
    )
)

替换数据(#2)

val replacementList: List<Map<String, Any>> = listOf(
    mapOf(
        "item_id" to "1111",
        "item_name" to "CHANGE ITEM 1",
        "origin_item_id" to "1234"
    )
)

需求

  • 从替换数据中提取origin_item_id的值(此处为"1234")
  • 在原始数据中找到item_id等于该值的映射
  • 将原始数据中对应的映射替换为替换数据里的对应映射

实现代码

fun main() {
    // 原始数据
    val originalList: List<Map<String, Any>> = listOf(
        mapOf(
            "item_id" to "1234",
            "item_name" to "MY ITEM 1",
            "origin_item_id" to "NULL"
        ),
        mapOf(
            "item_id" to "9999",
            "item_name" to "MY ITEM 5",
            "origin_item_id" to "NULL"
        )
    )

    // 替换数据
    val replacementList: List<Map<String, Any>> = listOf(
        mapOf(
            "item_id" to "1111",
            "item_name" to "CHANGE ITEM 1",
            "origin_item_id" to "1234"
        )
    )

    // 将替换数据转为origin_item_id到替换项的映射,提升查找效率
    val replacementMap = replacementList.associate {
        (it["origin_item_id"] as String) to it
    }

    // 遍历原始列表完成替换
    val resultList = originalList.map { originalItem ->
        val itemId = originalItem["item_id"] as String
        replacementMap[itemId] ?: originalItem
    }

    // 输出结果验证
    resultList.forEach { println(it) }
}

代码说明

  • 构建替换映射表:用associate将替换列表转换成键为origin_item_id的Map,后续查找替换项时只需O(1)时间,适合大数据量场景。
  • 遍历替换逻辑:通过map遍历原始列表,对每个项的item_id匹配替换映射表,存在对应替换项则替换,否则保留原项。
  • 类型安全提示:示例中用as String是基于已知数据结构的强转,若实际场景存在类型不确定的情况,建议改用it["origin_item_id"] as? String做安全转换,避免抛出类型转换异常。

扩展能力

该实现支持多替换项场景:如果替换数据中有多个不同origin_item_id的项,replacementMap会自动存储所有映射关系,遍历原始列表时会完成所有匹配项的替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:17:39