java如何将大的集合拆分成指定大小的小集合

2025-10-29 21:25:13

1、我们首先创建一个叫做ListDeal的工具类来完成这个需求

java如何将大的集合拆分成指定大小的小集合

2、首先确定方法的返回值为List<List<T>>,方法的参数为List<T> resList,int count

T是泛型,resList是源集合,count是分割出来的小集合中每个集合所应包含的元素个数

java如何将大的集合拆分成指定大小的小集合

3、首先该方法逻辑的第一部分,使用卫语句来防止源集合为null或者长度为0

java如何将大的集合拆分成指定大小的小集合

4、方法的第二部分为创建一个结果集合ret,然后判断源集合的长度是否小于给定的参数count,如果小于直接将源集合放入结果集合ret中即可

java如何将大的集合拆分成指定大小的小集合

5、第四部分为根据count对集合进行切割,注意如果切完之后还有剩余的元素,将其直接放入结果集ret中

java如何将大的集合拆分成指定大小的小集合

6、接下去是完整的方法

/**  

* 拆分集合  

* @param <T>  

* @param resList  要拆分的集合  

* @param count    每个集合的元素个数  

* @return  返回拆分后的各个集合  

*/  

public static  <T> List<List<T>> split(List<T> resList,int count){  

     

   if(resList==null ||count<1)  

       return  null ;  

   

   List<List<T>> ret=new ArrayList<List<T>>();  

   int size=resList.size();  

   if(size<=count){ //数据量不足count指定的大小  

       ret.add(resList);  

   }else{  

       int pre=size/count;  

       int last=size%count;  

       //前面pre个集合,每个大小都是count个元素  

       for(int i=0;i<pre;i++){  

           List<T> itemList=new ArrayList<T>();  

           for(int j=0;j<count;j++){  

               itemList.add(resList.get(i*count+j));  

           }  

           ret.add(itemList);  

       }  

       //last的进行处理  

       if(last>0){  

           List<T> itemList=new ArrayList<T>();  

           for(int i=0;i<last;i++){  

               itemList.add(resList.get(pre*count+i));  

           }  

           ret.add(itemList);  

       }  

   }  

   return ret;  

     

}  

java如何将大的集合拆分成指定大小的小集合

7、因为最常用的集合为ArrayList,所以写了一个ArrayList的重载方法,方便直接使用

import java.util.ArrayList;

import java.util.List;

public class ListDeal {

/**  

* 拆分集合  

* @param <T>  

* @param resList  要拆分的集合  

* @param count    每个集合的元素个数  

* @return  返回拆分后的各个集合  

*/  

public static  <T> List<List<T>> split(List<T> resList,int count){  

     

   if(resList==null ||count<1)  

       return  null ;  

   

   List<List<T>> ret=new ArrayList<List<T>>();  

   int size=resList.size();  

   if(size<=count){ //数据量不足count指定的大小  

       ret.add(resList);  

   }else{  

       int pre=size/count;  

       int last=size%count;  

       //前面pre个集合,每个大小都是count个元素  

       for(int i=0;i<pre;i++){  

           List<T> itemList=new ArrayList<T>();  

           for(int j=0;j<count;j++){  

               itemList.add(resList.get(i*count+j));  

           }  

           ret.add(itemList);  

       }  

       //last的进行处理  

       if(last>0){  

           List<T> itemList=new ArrayList<T>();  

           for(int i=0;i<last;i++){  

               itemList.add(resList.get(pre*count+i));  

           }  

           ret.add(itemList);  

       }  

   }  

   return ret;  

     

}  

/** 按指定大小,分隔集合,将集合按指定大小拆开

* @param <T>  

* @param resList  要拆分的集合  

* @param count    每个集合的元素个数  

* @return  返回拆分后的各个集合  

*/  

public static ArrayList<List<String>> split(ArrayList<String> list, int len) {

if (list == null || list.size() == 0 || len < 1) {

return null;

ArrayList<List<String>> result = new ArrayList<List<String>>();  

int size = list.size();

int count = (size + len - 1) / len;  

for (int i = 0; i < count; i++) {

List<String> subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1)));

result.add(subList);

}

return result;

}

java如何将大的集合拆分成指定大小的小集合

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢