如何添加具有相同第一个键的元素来映射和保存其中的每个元素?
“”“
var records = mutableMapOf<Int, Map<Int, List<String>>>()
records.put(1, mutableMapOf(Pair(2, listOf<String>("first"))))
records.put(1, mutableMapOf(Pair(3, listOf<String>("second"))))
“”“
发布于 2021-05-03 00:04:42
映射的每个键只能有一个值,如果你用已经存在的键添加另一个条目,它将覆盖它。您需要一个值类型,它是一个可以放入多个内容的集合(如List
或Set
)。
假设您想要使用Int
键来存储Pair<Int, String>
类型的项,那么您将需要一个MutableMap<Int, MutableList<Pair<Int, String>>>
(或Set
,您不会得到重复项,而且它通常是无序的)。
您需要为一个键对集合执行get
操作,然后添加到该集合中(或者您正在做的任何操作):
var records = mutableMapOf<Int, MutableList<Pair<Int, String>>>()
// this creates a new empty list if one doesn't exist for this key yet
records.getOrPut(1) { mutableListOf() }.add(Pair(2, "first"))
records.getOrPut(1) { mutableListOf() }.add(3 to "second") // another way to make a Pair
println(records)
>> {1=[(2, first), (3, second)]}
这有点冗长,所以您可能想做一些很好的addRecord(key, value)
等函数,以便更容易地访问这些内部列表
https://stackoverflow.com/questions/67358253
复制相似问题