我有一个自定义对象的树集。每个自定义对象由int a,int b,String c和double d组成。假设我有一个包含10个这样的自定义对象的treeSet对象t1。我还有另一个TreeSet对象t2是空的。将treeset t1中的对象复制到treeset t2中的最佳方法是什么...我想在t2中使用新对象,而不仅仅是引用t1中的对象。一种方法是在t2中创建10个新对象并复制所有值t1中10个对象中每个对象的a和b以及c和d,以及t2中的对象。有更好的方法吗?
答案 0 :(得分:2)
这种技术被称为"深度复制"并且它上面有一个很好的Stack Overflow问题here。
目前的前两个答案提供了两个好的观点:
答案 1 :(得分:2)
for (Item item : collection) {
newCollection.add(BeanUtils.cloneBean(item));
}
其中BeanUtils
来自commons-beanutils
答案 2 :(得分:1)
答案 3 :(得分:0)
取决于你的意思更好。最好的解决方案是使对象不可变,只需复制引用。
另一种方法是生成或编写复制构造函数。复制构造函数可以使用反射来复制所有字段。
对于您拥有的字段类型,您可以创建Object Cloneable并使用clone()方法。 (因为字段是基元或不可变的)
答案 4 :(得分:0)
你已经得到了答案。
但是,此过程最好在clone()方法中实现。所以你的所有对象都应该覆盖这个方法。
请在此处查看示例:http://www.roseindia.net/java/example/java/util/clone-method-example-in-java.shtml