Search code examples
javareferencevariable-assignment

How do I copy the contents of one ArrayList into another?


I have some data structures, and I would like to use one as a temporary, and another as not temporary.

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();

now the problem with this of course is that myObject is really just pointing to myTempObject, and so once myTempObject is cleared, so is myObject.

How do I retain the values from myTempObject in myObject using java?


Solution

  • You can use such trick:

    myObject = new ArrayList<Object>(myTempObject);
    

    or use

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

    You can get some information about clone() method here

    But you should remember, that all these ways will give you a copy of your List, not all of its elements. So if you change one of the elements in your copied List, it will also be changed in your original List.