java划分 List为几个LIst的几种工具类 1.按照目标份数划分 2.按照目标容量划分

Posted sxdcgaq8080

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java划分 List为几个LIst的几种工具类 1.按照目标份数划分 2.按照目标容量划分相关的知识,希望对你有一定的参考价值。

如题,示例代码如下:

/**
     * 1> 按照份数---划分list
     * @param source
     * @param num    想要划分成多少份
     * @return
     */
    public static <T> List<List<T>> splitListForNum(List<T> source,int num){
        List<List<T>> result=new ArrayList<List<T>>();
        int remaider=source.size()%num;  //(先计算出余数)
        int number=source.size()/num;  //然后是商
        int offset=0;//偏移量
        for(int i=0;i<num;i++){
            List<T> value=null;
            if(remaider>0){
                value=source.subList(i*number+offset, (i+1)*number+offset+1);
                remaider--;
                offset++;
            }else{
                value=source.subList(i*number+offset, (i+1)*number+offset);
            }
            result.add(value);
        }
        return result;
    }

    /**
     * 2> 根据目标容量 划分List
     * @param source
     * @param capacity 划分完成的单个List容量
     * @param <T>
     * @return
     */
    public static <T> List<List<T>> splitListBycapacity(List<T> source,int capacity){
        List<List<T>> result=new ArrayList<List<T>>();
        if (source != null){
            int size = source.size();
            if (size > 0 ){
                for (int i = 0; i < size;) {
                    List<T> value = null;
                    int end = i+capacity;
                    if (end > size){
                        end = size;
                    }
                    value = source.subList(i,end);
                    i = end;

                    result.add(value);
                }

            }else {
                result = null;
            }
        }else {
            result = null;
        }


        return result;
    }



    public static void main(String[] args) {
        List<Integer> all = new ArrayList<>();
        int a= 1000;
        for (int i = 0; i < a; i++) {
            all.add(i+1);
        }

        List<List<Integer>> split = splitListBycapacity(all,333);
        System.out.println(split.size());
        for (List<Integer> strings : split) {
            System.out.println(strings.size());
        }

    }

 

以上是关于java划分 List为几个LIst的几种工具类 1.按照目标份数划分 2.按照目标容量划分的主要内容,如果未能解决你的问题,请参考以下文章

Java List去重的几种方式

你必须知道的几种java容器(集合类)

java遍历List中的map的几种方法

List的拆分的几种方式

[知识整理]Java集合 - List

JSONUtils的几个常用方法