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

全不可变层级下向Map子列表添加元素的惯用方法

回答

你的实现思路其实是Kotlin中处理不可变Map与List时非常典型的惯用方式,而且完全抓住了不可变集合操作的核心逻辑——因为原集合都是不可变类型,所以“修改”本质是生成新的集合实例来覆盖原变量。

先拆解下你的原写法:

foo += "1" to (foo["1"] ?: emptyList()) + "c"

这里通过foo["1"] ?: emptyList()安全获取目标列表(键不存在时用空列表兜底),接着用+ "c"生成包含新元素的新列表,最后把新的键值对加入原Map(同样会生成一个新的Map实例),完全符合不可变集合的使用规范,是合理的实现方式。

而你更新后的写法:

foo += "1" to foo["1"].orEmpty() + "c"

则是更简洁的社区惯用写法——orEmpty()是Kotlin标准库为可空集合提供的扩展函数,和?: emptyList()语义完全一致,但代码更紧凑易读,是对原写法的优化,推荐日常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:00:10