gpt4 book ai didi

java - Kotlin - kotlin 列表过滤器是否会创建一个新的列表对象?

转载 作者:行者123 更新时间:2023-12-05 01:51:19 24 4
gpt4 key购买 nike

fun main() {
var list1 = listOf("AAAA", "ASAS", "ADDAD", "AS")
var list2 = list1
println(list2 === list1)
list2 = list2
.filter { it.length >= 3 }
println(list2 === list1)
}

以上代码的输出是:

true
false

但我很困惑为什么 list1 没有被修改,因为 list1 和 list2 首先引用同一个列表对象。谁能帮我理解这里到底发生了什么?

最佳答案

事实上,filter 确实创建了一个新列表。

当你这样做的时候

list2 = list2
.filter { it.length >= 3 }

您正在将新列表分配给 list2,所以现在 list2 不再引用 list1 所引用的内容,而是开始引用由 filter 创建的列表。因此,list2list1 现在指的是不同的东西。

关于java - Kotlin - kotlin 列表过滤器是否会创建一个新的列表对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72329651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com