首页 > 其他分享 >集合深拷贝

集合深拷贝

时间:2023-04-06 12:00:31浏览次数:43  
标签:java byteOut IOUtils io 集合 import 拷贝

package a.b.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Collections;
import java.util.List;

/**
 * @author lys
 * @since 2023/4/6 12:03
 */
@Slf4j
public class SerializationUtils {
    
    /**
     * 深拷贝
     *
     * @param src 原始数据
     * @param <T> 泛型
     * @return 深拷贝数据
     */
    @SuppressWarnings("unchecked")
    public static <T> List<T> deepCopy(List<T> src) {
        ByteArrayOutputStream byteOut = null;
        ObjectOutputStream out = null;
        ByteArrayInputStream byteIn = null;
        ObjectInputStream in = null;
        try {
            byteOut = new ByteArrayOutputStream();
            out = new ObjectOutputStream(byteOut);
            out.writeObject(src);
            byteIn = new ByteArrayInputStream(byteOut.toByteArray());
            in = new ObjectInputStream(byteIn);
            return (List<T>) in.readObject();
        } catch (Exception ex) {
            log.error("深拷贝异常", ex);
        } finally {
            IOUtils.closeQuietly(in);
            IOUtils.closeQuietly(byteIn);
            IOUtils.closeQuietly(out);
            IOUtils.closeQuietly(byteOut);
        }
        return Collections.emptyList();
    }
}

标签:java,byteOut,IOUtils,io,集合,import,拷贝
From: https://www.cnblogs.com/yslu/p/17292362.html

相关文章

  • 面试题大集合
    目录第一章Python基础第二章函数第三章模块第四章面向对象第五章网络和并发编程第六章数据库和缓存第七章前端第八章django第九章Flask第十章tornado第十一章api第十二章git第十三章爬虫第十四章算法和数据结构第十五章Linux第十六章设计题第十七章客观题第十八......
  • python 浅拷贝和深拷贝,赋值的例子
    一、浅拷贝copy.copy()数据半独立,看下面例子1、一层列表,能够完全拷贝,和深拷贝一样的效果import copyalist=[1,2,3]#id;2281268077504blist=copy.copy(alist)#id:2281267497216alist.append(13)#一层列表添加值后,alist的值:[1,2,3,13]#blist的值不变:[1,......
  • Ioc配置——集合类型的数据注入
    importcom.hw.dao.UserDao;importcom.hw.service.UserService;publicclassUserServiceImplimplementsUserService{privateUserDaouserDao;publicvoidsetUserDao(UserDaouserDao){this.userDao=userDao;}@Overridepubl......
  • c++primer 13拷贝控制
               ......
  • 645.错误的集合
    错误的集合集合s包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合丢失了一个数字并且有一个数字重复。给定一个数组nums代表了集合S发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它......
  • 深浅拷贝
    //注意:基本数据类型不存在深浅拷贝,只是值传递,复合数据类型才有深浅拷贝之说    varobj1={name:"吴亦凡"};    varobj2=obj1;    obj1.name="罗志祥";    //相当于把obj1的指针复制了一份给了obj2,两个指针指向了堆内存中......
  • Redis——面试问题集合
    那你能说说Redis是单线程的?Redis完全基于内存,绝大部分请求是纯粹的内存操作,非常迅速,数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度是O(1)。数据结构简单,对数据操作也简单。采用单线程,避免了不必要的上下文切换和竞争条件,不存在多线程导致的CPU切换......
  • FWT & FMT & 集合幂级数 题解集
    CF449DJzzhuandNumbers简要题意给定序列\(\{a_n\}\),求有多少个子序列满足所有元素的按位与为\(0\)。题解F1考虑FWT的与卷积形式,构造序列\(\{A_n\}\),使\(A_i=\displaystyle\sum_{j\&i=i}a_i\),记\(B_i=\displaystyle\sum_{b\ina}[(b_1\&b_2\&\cdots\&b_n)\&......
  • JDK源码——集合类Iterator、 Collection类
    摘要主要是讲解这个集合的原理类相关的类。参看:https://zhuanlan.zhihu.com/p/165393520这个图由Map指向Collection的Produces并不是说Map是Collection的一个子类(子接口),这里的意思是指Map的KeySet获取到的一个视图是Collection的子接口。我们可以看到集合有两个基本接口:Map和Collec......
  • 练习——集合排序
    packagecom.collection_.list_;publicclassBook{privateStringname;privateStringauther;privatedoubleprice;publicBook(Stringname,Stringauther,doubleprice){this.name=name;this.auther=auther;......