簡體   English   中英

使用pass-by-value創建Map副本的最佳方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM