克隆一个Java LinkedHashMap

4

如何在Java中克隆一个LinkedHashMap?

我已经尝试过以下方法:

Map<String, Object> clonedMap = new LinkedHashMap<String, Object>(originalMap);

但是那并没有起作用。

为什么它没有工作?你想让它做什么? - SLaks
7
定义"didn't work"。new Map(map)创建了一个"浅层"副本——引用相同。如果你想要一个"深层"副本(其中所有键和值也被克隆),答案完全取决于键和值类的实现。 - Bohemian
1
正如Bohemian所说,深拷贝可能是你想要的。请参见这里 - threenplusone
1个回答

1
获取深拷贝的最简单方法是将映射序列化,然后反序列化它。更快的方法是遍历整个映射,克隆每个键/值并将其放入新映射中。
如果您需要浅拷贝-您的片段可以正确执行此操作。

虽然序列化是一个简单的解决方案,但如果你想要自动化的东西,我宁愿使用反射。但更好的方法是让所有可克隆的类实现Cloneable接口(http://docs.oracle.com/javase/6/docs/api/java/lang/Cloneable.html)。 - Ravi Wallau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接