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 = 1spawnList = 0
为什么清除foundList时会清除spawnList?
回答:
你写过代码吗
spawnList = foundList
还是foundList = spawnList
?
如果是这样,由于an
ArrayList
是一个对象,您实际上并没有在复制这些列表,因此使它们引用了同一对象。(即,您对一个人所做的一切都会对另一个人有所影响)。
如果您想减轻这种情况,而不是直接将列表设置为彼此相等,则可以执行以下操作
foundList = new ArrayList<>(spawnList)
因为这将使两个数组成为独立的对象。
取决于数组中对象的类型,这仍然可能是一个问题,因为它们仍然是每个对象的相同实例。
以上是 Arraylist.clear清除所有数组列表? 的全部内容, 来源链接: utcz.com/qa/413559.html