kotlin - 将项目添加到地图中的列表的 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 中执行此操作的惯用方式是什么?
我的目标不是简洁,而是一种可以立即识别和理解的形式。
解决方案
您可以使用getOrPut
map.getOrPut(key) { mutableListOf() }.add(value)
推荐阅读
- sql - 如何创建一个表,其中外键 (2) 是另一个表 (Oracle) 中复合主键的一部分?
- javascript - 有没有办法在客户端行模型中使用无限滚动加载器?
- colors - CONTROL_EFFECT_MODE在小米、华为p10等部分设备上不起作用
- css - R闪亮的表格改变标题和浅色模式开关
- c# - Server.Mappath() 在远程服务器上失败
- php - Laravel API 令牌认证与 web Route::prefix('api')
- c++ - 尝试在 C++ 中打印树的内容时出现内存分配错误
- css - 在 create-react-app SassError 中导入变量:未定义的变量
- html - 具有价值而非时间的 SVG 形状变形
- python - 如何在不导入 tensorflow 的情况下从保存的模型 .h5 访问激活函数?