Copying a HashMap in Java

clone, copy, hashmap, java

Solution

If you want a copy of the HashMap you need to construct a new one with.

myobjectListB = new HashMap<Integer,myObject>(myobjectListA);

This will create a (shallow) copy of the map.

Problem

I am trying to keep a temporary container of a class that contains member : ``` HashMap<Integer,myObject> myobjectHashMap ``` A class called myobjectsList Then I do ``` myobjectsListA = new myobjectsList(); myobjectsListB = new myobjectsList(); ``` then: Add some hashmap items to A (like 2) then: ``` myobjectListB = myobjectListA; //B has 2 ``` then: Add hashmap items to A (like 4 more) then: return A to the items stored in B ``` myobjectListA = myobjectListb; ``` But when I do this, B grows with A while I am adding hashmap items to A. A now has 6 items in it because B had 6. I want A to still have the original 2 at the end after last assignment. In C++ I would use copy with objects, what is the java equivalent? Added: OK I left something out explaining this. `MyObjectsList` does not contain the HashMap, it is derived from a class `MyBaseOjbectsList` which has the HashMap member and `MyObjectsList` extends `MyBaseOjbectsList`. Does this make a difference?

Original source