Rai*_*baz 0 collections idioms kotlin
我有一个MutableMap<String, MutableList<String>我正在向其中添加项目,基本上是一个集合,其中相同的键与多个值相关联。
每当我想添加一个新值时,我需要首先检查是否已经有一个与同一个键关联的列表,如果没有则初始化一个,然后将该值添加到列表中。
我可以通过这样做以非常冗长的方式做到这一点
if (map.containsKey(key)) {
map[key].add(value)
} else {
map[key] = mutableListOf(value)
}
Run Code Online (Sandbox Code Playgroud)
我也可以通过这样做以非常简洁的方式做到这一点
map[key] = (map[key] ?: mutableListOf()) + mutableListOf(value)).toMutableList()
Run Code Online (Sandbox Code Playgroud)
以及介于冗长与简洁之间的其他几种方式。
但是,在 Kotlin 中执行此操作的惯用方法是什么?
我并不是真正的目标是简洁,而是要立即识别和理解的形式。
您可以使用getOrPut
map.getOrPut(key) { mutableListOf() }.add(value)
Run Code Online (Sandbox Code Playgroud)