ListUtils.java 1.35 KB
package com.ruoyi.utils;

import cn.hutool.core.collection.CollectionUtil;

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

/**
 * 集合工具类
 * @author 20412
 */
public class ListUtils<T>{
    public static <T> List<List<T>> splitList(List<T> list, int batchSize) {
        List<List<T>> batchList = new ArrayList<>();
        for (int i = 0; i < list.size(); i += batchSize) {
            int endIndex = Math.min(i + batchSize, list.size());
            List<T> subList = list.subList(i, endIndex);
            batchList.add(subList);
        }
        return batchList;
    }

    /**
     * 深度备份
     * @param sourceList
     * @return
     * @param <T>
     * @throws IOException
     * @throws ClassNotFoundException
     */
    public static <T> List<T> deepCopy(List<T> sourceList) throws IOException, ClassNotFoundException{
        if (CollectionUtil.isEmpty(sourceList)){
            return new ArrayList<>();
        }
        ByteArrayOutputStream bo= new ByteArrayOutputStream();
        ObjectOutputStream oos= new ObjectOutputStream(bo);
        oos.writeObject(sourceList);
        ByteArrayInputStream bi= new ByteArrayInputStream(bo.toByteArray());
        ObjectInputStream ois=new ObjectInputStream(bi);
        @SuppressWarnings("unchecked")
        List<T> dest = (List<T>)ois.readObject();
        return dest;
    }
}