码迷,mamicode.com
首页 > 编程语言 > 详细

java List实现深拷贝

时间:2021-04-21 12:55:09      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:collect   warning   tst   tin   obj   except   调用   class   http   

list分为浅拷贝和深拷贝,深拷贝就是list1拷贝到list2,我修改list2的内容,不用同步修改list1的内容,浅拷贝则会修改list1的内容。在网上查了有用Collections.copy或者Dto的方式实现,使用后感觉不是很好用,并且感觉不是很好找到直观方便的方式。于是,花了点儿时间在网络上找了一种方式,觉得蛮方便的,分享一下:

调用:
List<Dto> list2= deepCopy(list1);
实现方法:
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;
}

原deepCopy方法地址:
https://www.pianshen.com/article/17271053790/

java List实现深拷贝

标签:collect   warning   tst   tin   obj   except   调用   class   http   

原文地址:https://www.cnblogs.com/qingzhongcao/p/14681748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!