将缓存的Map <string,=“”list =“”>对象复制到临时Map <string,=“”list =“”> object </string> </string>

时间:2012-06-20 14:38:17

标签: java map ehcache

我从ehcache中获取一个Map<String , List>对象。我不想更新Map对象,而是希望将缓存的Map内容复制到临时Map中。如何创建Map的副本,以便更改主Map中的值也不会更改副本中的值。

2 个答案:

答案 0 :(得分:4)

这实际上取决于你想做什么。如果你只需要一份浅色的副本,保罗的答案就足够了,或者做以下的

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

但是,如果您需要深层复制,即您需要复制地图中的所有对象,您将必须遍历整个地图,并单独复制每个对象。另外,地图中的对象必须支持某种复制构造函数。

答案 1 :(得分:1)

您可以创建一个新的Map实例,然后调用putAll(Map),传入原始的Map。这会将所有键值映射复制到新实例中。

如果你正在使用番石榴,你也可以打电话给Maps.newHashMap(Map)等,以便在一行中达到同样的效果。