簡體   English   中英

如何將鍵和值添加到 Kotlin 中列表列表的 map?

[英]How to add key and value to map of list of lists in Kotlin?

我有一個 map 創建的列表,我只是想像這樣添加到 map 中:

val bandMap: Map<Int,List<List<Int>>> = mutableMapOf()

val rsrpList = mutableListOf<Int>()
val rsrqList = mutableListOf<Int>()
val levelList = mutableListOf<Int>()
rsrpList.add(3)
rsrqList.add(4)
levelList.add(1)
val listOfLists = mutableListOf(rsrpList,rsrqList,levelList)
bandMap[3] = listOfLists

但是“bandMap[3] = listOfLists”表示不匹配。

No set method providing array access

不知道這會在哪里? 好像它不知道我正在嘗試 map 什么。 我嘗試了 put 方法,但它似乎無法識別它。

謝謝。

編輯:

謝謝 Tenfour04 - 你幫了很多忙!

您已將外部 map 指定為只讀 Map 並將內部列表指定為變量類型中的只讀列表:

private val bandMap: MutableMap<Int,List<List<Int>>> = mutableMapOf()

即使您將 MutableLists 放入 map 中,由於bandMap的屬性類型,當您檢索它們時它們會向上轉換為 Lists。

如果您需要對它們進行變異, MutableList指定為內部列表的類型:

private val bandMap: MutableMap<Int, List<MutableList<Int>>> = mutableMapOf()

或者,如果您還需要修改列表的外部列表:

private val bandMap: MutableMap<Int, MutableList<MutableList<Int>>> = mutableMapOf()

旁注,這種三維集合結構使用起來有點混亂(容易出錯)。 您可能會想出一個使用 class 的結構,以便更容易推理和使用。 我真的不知道你的結構代表什么,但這是一個模糊的例子:

class Band {
    val rsrpList = mutableListOf<Int>()
    val rsrqList = mutableListOf<Int>()
    val levelList = mutableListOf<Int>()
}

val bandMap: MutableMap<Int, Band> = mutableMapOf()
bandMap[3] = Band()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM