简体   繁体   中英

What is the best way to create a copy of a Map using pass-by-value?

If I have a Java map with 100s of values in it, and I wanted to create another copy of it using this code :

LinkedHashMap<String, Vector<String>> map1 = new LinkedHashMap<String, Vector<String>>();
LinkedHashMap<String, Vector<String>> map2 = new LinkedHashMap<String, Vector<String>>( map1 );

Then if I change any value in any Vector entry for map1 it will be affected in map2 also. I do not want that. I want map2 to be totally independent on map1.

What is the best way to do that ?

Basically, you'll need to clone each vector:

LinkedHashMap<String, Vector<String>> map2 = new LinkedHashMap<String, Vector<String>>();
for (Map.Entry<String, Vector<String>> entry : map1.entrySet()) {
    Vector<String> clone = new Vector<String>(entry.getValue());
    map2.put(entry.getKey(), clone);
}

You don't have to go any deeper than that though, of course - because String is immutable.

(Any reason you're using Vector rather than ArrayList , by the way?)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM