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