首页 > 解决方案 > 如何避免从第二个列表中删除项目会影响 kotlin 中的原始列表

问题描述

我想要做的是保留一个原始列表和两个重复的列表来执行操作。SayorginalList是一个字符串列表,有 5 个条目

duplicatedList = originalList
secondDuplicatedList = orignalList
duplicatedList.remove(0)
secondDuplicatedList.remove(1)

这些值将从所有三个列表中删除,最后所有三个列表将有 3 个条目。

我见过很多类似的问题,但我不太明白

任何帮助或建议都会很棒。谢谢

标签: androidkotlinmutablelist

解决方案


duplicatedList = originalList

使用等号将使另一个指针指向内存中的相同位置(duplicatedList 不是从头开始实例化的);所以duplicatedList&都originalList指向同一个列表

相反,您需要在内存中创建一个与原始列表具有相同值的全新列表。

您可以使用 Collection 的扩展功能toMutableList()来做到这一点:

duplicatedList = originalList.toMutableList()
secondDuplicatedList = originalList.toMutableList()

这个扩展函数最初创建了一个新列表:

public fun <T> Collection<T>.toMutableList(): MutableList<T> {
    return ArrayList(this)
}

推荐阅读