修改不可变列表的副本会更改内容原始列表

问题描述 投票:0回答:0

我正在尝试处理基本列表,它的副本是为了比较用户更改副本后它们是否相同。 不知何故,我遇到了一个问题,我无法将这些列表分开,我尝试比较内存对象引用,它们似乎是分开的,转换 .toImmutableList() 也没有达到预期的效果。

有人知道这里发生了什么吗?

    // list of enum class instances with 2 fields ->  displayName : String, isSelected : Boolean = false
val baseCategories = baseFilters._categories.toImmutableList()

// mutable copy of the list
val copyCategories = baseCategories.toMutableList()


// logging out baseCategories list, results in empty list which is good
log(baseCategories.filter { it.isSelected })

// modifying copy
copyCategories.find { it.displayName == "Electronics" }?.isSelected = true

// somehow baseCategories gets changed
log(baseCategories.filter { it.isSelected })

// always false
log(baseCategories === copyCategories)

日志:

[]
[electronics]
false
list kotlin enums immutability
© www.soinside.com 2019 - 2024. All rights reserved.