我有一些数据结构,我想将其中一个用作临时结构,将另一个用作非临时结构。
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();
现在的问题当然是
myObject
实际上只是指向myTempObject
,因此一旦myTempObject
被清除,myObject
也会被清除。如何使用Java在
myTempObject
中保留myObject
中的值? 最佳答案
您可以使用以下技巧:
myObject = new ArrayList<Object>(myTempObject);
或使用
myObject = (ArrayList<Object>)myTempObject.clone();
您可以获得有关clone()方法here的一些信息
但您应该记住,所有这些方式都将为您提供列表的副本,而不是其所有元素的副本。因此,如果您更改复制的列表中的元素之一,则它也将在原始列表中进行更改。