【发布时间】:2014-11-08 00:32:16
【问题描述】:
在输入问题之前,我知道除了原始类型之外,所有内容都由它的参考号存储。我的 java 代码结构是这样的.....首先我有司机、预订和汽车类。它们之间的关系是司机是执行预订的司机,并且汽车被预订要驾驶,存储在预订类中。
司机将负责预订。汽车有一些原始类型信息。多辆车可以存储到预订中(原始和ArrayList)。但是一个驱动程序 (ArrayList)(来自驱动程序类)可以有多个保留。所以,当我允许用户查看司机的预订时,我想深度复制ArrayList 中的所有内容,因为除了原始类型之外的所有内容都是参考编号。
无论如何,我会复制一份数组列表,以便在驱动程序类中保留。
在我的驱动程序类中,这是一个访问器,当它传递ArrayList 时,我尝试先进行深度复制并传递ArrayList。
public ArrayList<Reference> getReference() {
copiedRef = new ArrayList<Reference>();
//references have been declared above
for (int i = 0; i < references.size(); i++) {
copiedRef.add(references.get(i));
//getting each element in the arrayList one by one and push to a new ArrayList
}
return copiedRef;
}
这是在做深拷贝吗?如果我需要使用clone()。
我将如何改进? (clone 做浅拷贝,我不认为clone 可以帮助深拷贝,否则我可能会误解其他帖子。
【问题讨论】:
-
这是一个浅拷贝。你的 Reference 类包含什么?
标签: java arraylist clone deep-copy copyonwritearraylist