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

时间:2016-02-29 20:42:42

标签: java arrays list

我有2个单独的数组列表。一个叫做spawnList,另一个叫做findList

我有代码运行,它生成一个实体并将所述实体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?

1 个答案:

答案 0 :(得分:3)

你有没有写过代码

spawnList = foundListfoundList = spawnList

如果是这样,因为ArrayList是一个你实际上并没有复制这些列表的对象,所以你让它们引用同一个对象。 (IE对一个人所做的一切都将完成另一个)。

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

的操作

foundList = new ArrayList<>(spawnList)

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

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