当前位置: 首页 > 知识库问答 >
问题:

Kotlin-Kotlin列表筛选器是否创建新的列表对象?

夏昌胤
2023-03-14
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都首先引用同一个列表对象。有人能帮我理解这里到底发生了什么吗?

共有1个答案

倪鹏
2023-03-14

实际上,过滤器确实创建了一个新列表。

当你这样做的时候

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

您正在将该新列表分配给列表2,因此现在列表2不再引用列表1所引用的内容,而是开始引用由过滤器创建的列表。因此,列表2和列表1现在指的是不同的事物。

 类似资料:
  • 本文向大家介绍Kotlin 筛选列表,包括了Kotlin 筛选列表的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我的教授和这个家伙都声称创造了价值清单。 “注意:范围函数仅返回包含从x到y-1的数字的列表。例如,range(5,10)返回列表[5、6、7、8、9]。” 我认为这是不准确的,因为: 此外,访问由创建的整数的唯一显而易见的方法是遍历它们,这使我认为标记为列表是不正确的。 问题答案: 在Python 2.x中,返回一个列表,但在Python 3.x中,返回一个不可变序列,类型为。 Py

  • 我想使用Kotlin读取yaml配置文件,下面是我的代码: 类以使用配置: 看起来,如果yaml文件有array/list,Kotlin无法正确读取它,但它在没有array的情况下工作。 我有完全相同的代码,为Java工作。我的静态编程语言代码有问题吗?

  • 列表筛选可以对地图中的数据按照事先设置好的列表模板进行查询。在第一次点击列表筛选时,会进入筛选定制页面,如下图: 点击确认后,开始进行筛选设置:点击新增按钮,可对某个字段添加筛选要求,添加后然后选择条件旁边加号按钮,以设置对某一列的具体筛选要求。 如上图的筛选条件为“名称包含迪亚”的售点,继续单击加号可以对名称列继续添加条件。如果需要对其他字段进行筛选,可以再次单击新增按钮增加条件,点击确定及保存

  • 我试图通过Kotlin使用Jackson对lastfm api提供的xml进行反序列化。我用JAXB在Java中实现了这一点,我正在尝试移植它。除以下示例中的“未包装列表”字段外,所有功能都正常工作。我知道Track数据类正在工作,因为如果我使用而不是

  • 我正在尝试根据另一个列表中存在的值筛选一个列表。我已经经历了其他类似的问题,并试图利用这些来实现我的目标,但无法做到这一点。 列表1由类(L1)的对象组成 列表2由类(L2)的对象组成 因此,筛选后,列表1将不包含,因为该模型与中的不匹配。 我怎么能这么做?