【问题标题】:How to avoid remove item from second list affects the original list in kotlin如何避免从第二个列表中删除项目会影响 kotlin 中的原始列表
【发布时间】:2021-11-03 22:51:30
【问题描述】:

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

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

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

我看到很多类似的问题,但我不太明白

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

【问题讨论】:

    标签: android kotlin mutablelist


    【解决方案1】:

    duplicatedList = originalList

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

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

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

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

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

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

    【讨论】:

    • 有点迂腐......“平等”运算符是==。单个等号是赋值运算符。
    【解决方案2】:

    试试

    duplicatedList.addAll(originalList)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 2022-12-20
      • 1970-01-01
      相关资源
      最近更新 更多