3

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

4

2 回答 2

4

这真的取决于你想做什么。如果你只需要一个浅拷贝,保罗的回答就足够了,或者执行以下操作

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

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

于 2012-06-20T14:47:52.457 回答
1

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

如果您使用的是 Guava,您也可以调用Maps.newHashMap(Map)etc. 以在一行中实现相同的效果。

于 2012-06-20T14:41:26.193 回答