Java之list分割
一、按照指定分割数,分割集合
public List> averageAssign2(List source, int splitNum){
List> result = new ArrayList>();
//循环下标
int i = 0;
//集合总数 / 分割每段数
for (; i < source.size() / splitNum; i++) {
//splitNum代表每段分割的子集合数据条数
result.add(source.subList(i * splitNum, (i + 1) * splitNum));
}
//如果有余数,再将剩下的追加进去
if (source.size() % splitNum != 0) {
result.add(source.subList(i * splitNum, i * splitNum + source.size() % splitNum));
}
return result;
}
二、将集合分割成指定份数
public List> averageAssign(List source, int n){
List> result = new ArrayList>();
//n代表待分割的份数
int remaider = source.size() % n; //(先计算出余数)
int number = source.size() / n; //然后是商
int offset = 0;//偏移量
for(int i = 0; i < n; i++){
List 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;
}