我有一些数据结构,我想将其中一个用作临时结构,将另一个用作非临时结构。

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的一些信息

但您应该记住,所有这些方式都将为您提供列表的副本,而不是其所有元素的副本。因此,如果您更改复制的列表中的元素之一,则它也将在原始列表中进行更改。

07-24 22:18