List的深度克隆

在完成ArrayList的复制的时候,发现通过list.addAll()方法复制的List中的对象,和原来List 中的对象是同一个地址,这意味着你修改复制的list中的一个对象,那么原来list 中的对象也会跟着变化!这称为浅克隆,在很多地方浅克隆,不能实现我们需求。深度克隆,是指在复制list的时候,list 中的对象,也都是新的对象(和原list中的对象地址不同)

1.深度复制的代码(据说源自某个国外大神)

public static <T> List<T> deepCopy(List<T> src) throws IOException, ClassNotFoundException {  
    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();  
    ObjectOutputStream out = new ObjectOutputStream(byteOut);  
    out.writeObject(src);  
  
    ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());  
    ObjectInputStream in = new ObjectInputStream(byteIn);  
    @SuppressWarnings("unchecked")  
    List<T> dest = (List<T>) in.readObject();  
    return dest;  
}  
希望能遇到此问题的朋友,能跟我分享其他靠谱的深度克隆的方法^-^

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值