最近在写一个项目,需要大量用到深度克隆,由于对于算法的效率要求非常高,所以我重载了所有可能被克隆的类的clone方法,但现在有的类包含一个List,这个List中的元素都已经重载了clone方法实现了深度克隆,那现在我该如何克隆这个List。我已经试过了对于List中每个对象自己手动去克隆,再依次加入新的List中,很可惜,这个方法的效率过低,这样做程序的20%的时间都在用来做克隆,所以有没有什么快速的方法实现List深度克隆,List中每个元素都已经重载了clone方法实现了深度克隆。这个List是ArrayList,如果需要,我可以改成普通的数组,但最好不要这样做。
查了源码也是一个个add
Object o = null;
try {
if (src != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(src);
oos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(
baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
o = ois.readObject();
ois.close();
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return o;
}