如何将一个 ArrayList 的内容复制到另一个 ArrayList 中?

2022-08-31 11:12:16

我有一些数据结构,我想使用一个作为临时结构,另一个作为非临时的。

ArrayList<Object> myObject = new ArrayList<Object>();
ArrayList<Object> myTempObject = new ArrayList<Object>();


//fill myTempObject here
....

//make myObject contain the same values as myTempObject
myObject = myTempObject;

//free up memory by clearing myTempObject
myTempObject.clear();

现在这个问题当然是,这真的只是指向,所以一旦被清除,也是如此。myObjectmyTempObjectmyTempObjectmyObject

如何使用java保留值?myTempObjectmyObject


答案 1

你可以使用这样的技巧:

myObject = new ArrayList<Object>(myTempObject);

或使用

myObject = (ArrayList<Object>)myTempObject.clone();

你可以在这里获得一些关于 clone() 方法的信息

但你应该记住,所有这些方式都会给你一份清单的副本,而不是它的所有元素。因此,如果您更改复制的列表中的某个元素,则该元素也将在原始列表中更改。


答案 2

originalArrayList.addAll(copyArrayList);

请注意:当使用 addAll() 方法进行复制时,两个数组列表(originalArrayList 和 copyArrayList)的内容都引用相同的对象或内容。因此,如果您修改其中任何一个,另一个也将反映相同的更改。

如果你不想这样做,那么你需要将每个元素从原始ArrayList复制到copyArrayList,就像使用for或while循环一样。