[英]What is the best way to create a copy of a Map using pass-by-value?
如果我有一個包含100個值的Java映射,並且我想使用以下代碼創建它的另一個副本:
LinkedHashMap<String, Vector<String>> map1 = new LinkedHashMap<String, Vector<String>>();
LinkedHashMap<String, Vector<String>> map2 = new LinkedHashMap<String, Vector<String>>( map1 );
然后,如果我在map1的任何Vector條目中更改任何值,它也會在map2中受到影響。 我不要那個。 我希望map2在map1上完全獨立。
最好的方法是什么?
基本上,您需要克隆每個向量:
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);
}
當然,你不必深入到這一點 - 因為String
是不可變的。
(順便說一句,你使用Vector
而不是ArrayList
原因是什么?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.