我从ehcache中获取一个Map<String , List>
对象。我不想更新Map
对象,而是希望将缓存的Map
内容复制到临时Map
中。如何创建Map
的副本,以便更改主Map
中的值也不会更改副本中的值。
答案 0 :(得分:4)
这实际上取决于你想做什么。如果你只需要一份浅色的副本,保罗的答案就足够了,或者做以下的
Map<String, Object> fromEhcache = ...
Map<String, Object> copy = new HashMap<String, Object>(fromEhcache);
但是,如果您需要深层复制,即您需要复制地图中的所有对象,您将必须遍历整个地图,并单独复制每个对象。另外,地图中的对象必须支持某种复制构造函数。
答案 1 :(得分:1)
您可以创建一个新的Map
实例,然后调用putAll(Map)
,传入原始的Map
。这会将所有键值映射复制到新实例中。
如果你正在使用番石榴,你也可以打电话给Maps.newHashMap(Map)
等,以便在一行中达到同样的效果。