2012-06-20 76 views

回答

1

您可以創建一個新的Map實例,然後調用putAll(Map),傳入原始Map。這會將所有鍵值映射覆制到新實例中。

如果您使用的是番石榴,您也可以撥打Maps.newHashMap(Map)等,以實現同一效果。

+0

感謝您的回覆... 我已經在構造函數中使用了傳遞映射,並把所有n甚至克隆。但是當我迭代來自map的List對象並從列表中更改對象時,它仍然會更改緩存的Map對象。 任何人都可以建議我們有任何像BeanUtils copyProperties這樣的util方法,它會將地圖值複製到另一個地圖而沒有任何鏈接。 – Mahesh

4

這真的取決於你想要做什麼。如果你只需要一個淺拷貝,保羅的回答就夠了,還是做以下

Map<String, Object> fromEhcache = ... 
Map<String, Object> copy = new HashMap<String, Object>(fromEhcache); 

但是,如果你需要一個深拷貝,即你需要從地圖中的所有對象進行藏漢複製,你將不得不遍歷整個地圖,並單獨複製每個對象。另外,地圖中的對象必須支持某種形式的拷貝構造函數。

+0

+1值得一提的是深層複製 - OP應該真正地闡明「改變臨時地圖中的值」的含義。 –

+1

+1如果您想深入克隆,請閱讀本文討論http://stackoverflow.com/questions/665860/deep-clone-utility-recomendation – sperumal

相關問題