gpt4 book ai didi

java - Arraylist.clear 清除所有数组列表?

转载 作者:行者123 更新时间:2023-12-01 21:47:55 24 4
gpt4 key购买 nike

我有 2 个独立的数组列表。一个称为spawnList,另一个称为foundList

我运行了代码,它生成一个实体并将所述实体 ID 添加到 spawnList,因此现在 spawnList.size() 将等于 1

接下来运行它会清除foundList搜索实体并将其找到的内容与spawnList进行比较,任何匹配项都会添加到foundList中。

我遇到的奇怪问题是,当foundList被清除时,spawnList也被清除

我缩小了范围并打印了一些内容来测试

        System.out.println("spawnList = " + this.spawnList.size());
this.foundList.clear();
System.out.println("spawnList = " + this.spawnList.size());

这将打印出来

spawnList = 1
spawnList = 0

为什么在清除foundList的同时,spawnList也被清除?

最佳答案

你写过代码吗

spawnList = foundListfoundList = spawnList

如果是这样,因为 ArrayList是一个对象,您实际上并没有复制这些列表,而是让它们引用同一个对象。 (也就是说,你对一个人所做的一切都会对另一个人做)。

如果您想减轻这种情况,而不是直接将列表设置为彼此相等,您可以执行类似的操作

foundList = new ArrayList<>(spawnList)

因为这将使两个数组成为单独的对象。

根据数组中对象的类型,这仍然可能是一个问题,因为它们仍然是每个对象的相同实例。

关于java - Arraylist.clear 清除所有数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35709229/

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