看一下这个代码示例
val list = mutableListOf("1", "2", "3")
val listOfLists = mutableListOf(list, list, list)
val firstList = listOfLists[0] //get reference to *list* variable
firstList[0] = "Hello" // replace "1" in firstList with "Hello"
print(listOfLists)
这是打印输出
[[Hello, 2, 3], [Hello, 2, 3], [Hello, 2, 3]]
如果您发现
listOfLists
变量从未在中再次调用,但是它没有被更新。而且更新不仅在第一个位置,而且还在所有位置更新。我的意图是仅更新
firstList
变量。为什么会发生这种情况,我该如何解决?
最佳答案
Java将变量作为引用处理,因此Kotlin也是如此。因此,所有引用在更新一个后都会更改。您必须使用列表的副本以确保独立更新:
val list = listOf("1", "2", "3")
val listOfLists = mutableListOf(
list.toMutableList(),
list.toMutableList(),
list.toMutableList())
val firstList = listOfLists[0]
firstList[0] = "Hello"
print(listOfLists)
关于kotlin - 为什么Kotlin嵌套列表具有此行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53985639/