gpt4 book ai didi

java - 将一个数组列表的内容接收到另一个数组列表中,然后清空第一个数组列表

转载 作者:行者123 更新时间:2023-12-01 14:15:53 26 4
gpt4 key购买 nike

我想将arraylist array1的内容接收到arraylist array2中,然后清空array1的内容:

    public ArrayList array1 = new ArrayList();
public ArrayList array2 = new ArrayList();

/* array1 contains data and array2 is empty*/

array2.addAll(array1);
array1.clear();
System.out.println(array2);

我遇到的问题是 array2 是空的 []

当我删除行 array1.clear(); 时,效果很好,并且 array2 显示内容 [a1, a2, a3].

我认为当array2接收到array1的内容时,我们可以毫无问题地清除array1。因为它仍然在内存中,所以它会从两个地方删除吗?

怎样才能做到正确呢?

最佳答案

array1.clear() 将 arraylist 中包含的所有对象设置为 null。但这并不能确保 arraylist 中包含的所有对象都会被垃圾回收。在其他地方有引用的对象将不会被GC,直到所有引用都被删除。

并且 array1= null 只是将其引用设置为 null,并且不会被垃圾回收,直到有对其的引用,并且其中包含的对象也将被 GC 处理,如上所述。

因为你永远不知道 GC 何时完成,因此你不能通过将对象设置为 null 来强制 GC。当对象超出范围时,这些对象将被 GC 处理。

尝试使用array1= null..

或者为了复制,您也可以使用克隆方法

array2= (ArrayList<Object>)array1.clone();

关于java - 将一个数组列表的内容接收到另一个数组列表中,然后清空第一个数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18108470/

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