数组和集合的深浅拷贝

数组的拷贝

数组拷贝

Arrays.copyOf(原数组,长度z);会拷贝到长度为z新数组

集合的拷贝

集合中都是基本数据类型

list2.addAll(list1);

Collections.addAll(list2,list1);

集合的深拷贝

集合中有引用数据类型如自定义类型Student

如果再利用addAll();只是浅拷贝;对象还是同一个对象

深拷贝:可以讲对象写入流中,再读出来作为返回值给另一个集合;//

//深拷贝方法,需要时直接调用传入拷贝的对象,//obj必须实现接口Serializable;//才能被序列化
public static List<Student> deClone(Object obj) throws Exception {

    //将对象写到流里;流里写入对象的拷贝
    ByteArrayOutputStream bo = new ByteArrayOutputStream();
    ObjectOutputStream oo = new ObjectOutputStream(bo);
    oo.writeObject(obj);

    //从流里读出来
    ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
    ObjectInputStream oi = new ObjectInputStream(bi);
    
    return (List<Student>) oi.readObject();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值