List集合的深复制和浅复制

## 深复制浅复制的官方概念我们就不用再多说了,百度一搜一大堆。

提示:以下是本篇文章正文内容,下面案例可供参考

一、深复制和浅复制的简单理解

打个比方,就好像你有一辆车,你朋友借你的车开,当他开到半路去加油,然后给你送了回来,这时候你的车也就发生了变化,这就是浅复制。
如果你的朋友比着你这辆车,买了一辆一模一样的车,这时候他再去加油,你的车就不会再有任何变化了,这就是深复制。

二、直接上代码

1.引包

	import java.io.*;
	import java.util.ArrayList;
	import java.util.List;	

2.生成测试数据

		List<Products> productList = new ArrayList<>();
        Products products1 = new Products(1,"华为手机","2.15","土豪金",3500D);
        Products products2 = new Products(2,"小米手机","3.11","玫瑰金",2500D);
        Products products3 = new Products(3,"OPPO手机","1.22","象牙白",4500D);
        Products products4 = new Products(4,"VIVO手机","1.24","哑光黑",5000D);
        Products products5 = new Products(5,"诺基亚手机","1.55","高贵粉",4000D);
        productList.add(products1);
        productList.add(products2);
        productList.add(products3);
        productList.add(products4);
        productList.add(products5);

        List<Products> list = null;
        try {
            list = deepCopy(productList);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
		//这时候我们对旧集合进行改变
        for (Products products : productList) {
            products.setName("iPad");
        }

3.核心方法

	public static List deepCopy(List 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);
        List dest = (List)in.readObject();
        return dest;
    }

4.运行结果

在这里插入图片描述

可以看到,旧集合的name已经发生改变,但新集合并未改变。


总结

以上内容仅代表个人观点,本人也是新手一枚,如有不理想的地方,欢迎各路大神指正。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值