1、我们首先创建一个叫做ListDeal的工具类来完成这个需求
2、首先确定方法的返回值为List<List<T>>,方法的参数为List<T> resList,int countT是泛型,resList是源集合,count是分割出来的小集合中每个集合所应包含的元素个数
3、首先该方法逻辑的第一部分,使用卫语句来防止源集合为null或者长度为0
4、方法的第二部分为创建一个结果集合ret,然后判断源集合的长度是否小于给定的参数count,如果小于直接将源集合放入结果集合ret中即可
5、第四部分为根据count对集合进行切割,注意如果切完之后还有剩余的元素,将其直接放入结果集ret中
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; }
7、因为最常用的集合为ArrayList,所以写了一个ArrayList的重载方法,方便直接使用import java.util.ArrayL足毂忍珩ist;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; }}