我只是想找出如何制作HashMap
的深层副本的最佳解决方案。此地图中没有实现Cloneable
的对象。我希望找到比序列化和反序列化更好的解决方案。
答案 0 :(得分:13)
查看深度克隆,在Google Code上您可以找到一个库。您可以在https://github.com/kostaskougios/cloning上阅读。
它的工作原理很简单。这可以克隆任何对象,并且对象不必实现任何接口,如serializable。
Cloner cloner = new Cloner();
MyClass clone = cloner.deepClone(o);
// clone is a deep-clone of o
请注意:这可能会克隆数千个对象(如果克隆的对象具有许多引用)。此外,复制文件或流可能会导致JVM崩溃。
但是,您可以忽略某些类的实例,例如stream等。值得检查这个库及其来源。
答案 1 :(得分:3)
我不认为它可以通用的方式实现。
目前,我建议以较不一般的方式重写你的问题
答案 2 :(得分:1)
这并不容易,我们正在使用某种解决方法:
1)将地图转换为json字符串。 (例如,使用Google Gson)
2)将json字符串转换回map。
请注意存在性能问题,但这是最简单的方法。