List切割工具类

我们在工作过程中,有时会对集合数据分批、分页处理,提供一个工具类,您可以指定分批数,返回一个分批集合,每批中包含需分配好的要执行数据集

import com.data.sync.dto.basic.EndLinkmanDto;
import com.framework.utils.StringUtil;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 
 */
public class AssigningTaskUtil {

    /**
     * 指定要执行的任务,智能为任务分配执行元素
     * @param list         需要处理的数据集合
     * @param taskTotal    需要多少个任务处理数据集合
     * @return
     */
    public static  <T> List<List<T>>  assigningTask(List<T>  list,int taskTotal){
        List< List<T> >  taskTotalList =new ArrayList<>();
        //需要多少个任务执行
        //int taskTotal = 3;

        if(list.size()<taskTotal){
            taskTotalList.add(list);
            return taskTotalList;
        }

        //记录数
        int total = list.size();

        //每个任务平均多少条记录
        int size = total / taskTotal;

        //还剩余多
        int  surplus= total % taskTotal ;

        //为每个任务分配记录
        for (int i = 1; i <= taskTotal; i++) {
            List<T> listCopy = new ArrayList<>();
            listCopy.addAll(list.subList((i - 1) * size, i * size))  ;
            taskTotalList.add(listCopy);
        }
        //为剩余记录分配任务
        for (int i = 1; i <= surplus; i++) {
            T  o=  list.get( taskTotal*size+(i-1)  );
             taskTotalList.get(i-1).add(o);
        }
        return taskTotalList;
    }


    public static void main(String[] args) {
        List<List<EndLinkmanDto>> dtoList=new ArrayList<>();

        List<EndLinkmanDto> list=new ArrayList<>();

        EndLinkmanDto o1=new EndLinkmanDto();

        EndLinkmanDto o2=new EndLinkmanDto();
        EndLinkmanDto o3=new EndLinkmanDto();
        EndLinkmanDto o4=new EndLinkmanDto();
        EndLinkmanDto o5=new EndLinkmanDto();

        o1.setCompanyName("111");
        o2.setCompanyName("112");
        o3.setCompanyName("113");
        o4.setCompanyName("114");
        o5.setCompanyName("115");


        list.add(o1);
        list.add(o2);
        list.add(o3);
        list.add(o4);
        list.add(o5);
        dtoList=  assigningTask(list  ,  3);

     System.out.println( StringUtil.convert2String(dtoList ));

    }

}


发布了12 篇原创文章 · 获赞 0 · 访问量 356

猜你喜欢

转载自blog.csdn.net/weixin_46279293/article/details/105673659