我有:
ArrayList<ArrayList<ArrayList<Task>>> optimalPaths = new ArrayList<ArrayList<ArrayList<Task>>>();
我想创建一个OptimalPaths的深层副本。副本本身不应包含对optimumPaths的任何引用。以下代码可以工作吗?
ArrayList<ArrayList<ArrayList<Task>>> altPaths = new ArrayList<ArrayList<ArrayList<Task>>>();
for (ArrayList<ArrayList<Task>> e : optimalPaths){
altPaths.add((ArrayList<ArrayList<Task>>) e.clone()); // Create deep copy of optimalPaths
}
我不确定altPaths中是否仍存在某些级别的引用。
答案 0 :(得分:0)
您可以自己做
None
答案 1 :(得分:0)
如果Task类没有要复制的临时字段,则可以使用序列化和反序列化复制:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(optimalPaths);
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream in = new ObjectInputStream(bis);
ArrayList<ArrayList<ArrayList<Task>>> copied = (ArrayList<ArrayList<ArrayList<Task>>>) in.readObject();
或使用外部类来做到这一点:SerializationUtils from Apache Commons