【java】劃分 List為幾個LIst的幾種工具類 1.按照目標份數劃分 2.按照目標容量劃分
阿新 • • 發佈:2018-07-27
arr aci lse println 根據 spa new split 多少
如題,示例代碼如下:
/** * 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.按照目標容量劃分