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

我有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 = foundList还是foundList = spawnList

如果是这样,由于an

ArrayList是一个对象,您实际上并没有在复制这些列表,因此使它们引用了同一对象。(即,您对一个人所做的一切都会对另一个人有所影响)。

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

foundList = new ArrayList<>(spawnList)

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

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

以上是 Arraylist.clear清除所有数组列表? 的全部内容, 来源链接: utcz.com/qa/413559.html

回到顶部