首页 > 解决方案 > 将项目添加到地图中的列表的 Kotlin 惯用方式

问题描述

我有一个MutableMap<String, MutableList<String>我正在向其中添加项目,基本上是一个集合,其中相同的键与多个值相关联。

每当我想添加一个新值时,我需要首先检查是否已经有一个与同一键关联的列表,如果没有则初始化一个,然后将值添加到列表中。

我可以通过这样做以非常冗长的方式做到这一点

if (map.containsKey(key)) {
    map[key].add(value)
} else {
    map[key] = mutableListOf(value)
}

我也可以通过这样做以非常简洁的方式做到这一点

map[key] = (map[key] ?: mutableListOf()) + mutableListOf(value)).toMutableList()

以及在冗长与简洁之间的其他几种方式。

但是,在 Kotlin 中执行此操作的惯用方式是什么?

我的目标不是简洁,而是一种可以立即识别和理解的形式。

标签: kotlincollectionsidioms

解决方案


您可以使用getOrPut

map.getOrPut(key) { mutableListOf() }.add(value)

推荐阅读