代码示例:
/**
* 方法描述: 集合拆分
*
* @param list 数据集合
* @param groupSize 分割单位,每个子集合大小 groupSize
* @return java.util.List<java.util.List < T>>
* @author wqf
* @date 2021/5/21 14:51
*/
public static <T> List<List<T>> averageAssign(List<T> list, int groupSize) {
List<List<T>> result = new ArrayList<>();
if (groupSize <= 0) {
return Collections.emptyList();
}
//集合大小小于分割大小不处理
if (list == null || list.size() <= 0 || list.size() <= groupSize) {
result.add(list);
return result;
}
//数据总数量
int totalCount = list.size();
//一次批量插入1000条数据,需要拆分的组数
int groupCount = totalCount % groupSize == 0 ? totalCount / groupSize : totalCount / groupSize + 1;
//余数
int remainder = totalCount % groupSize;
int i;
for (i = 0; i < groupCount - 1; i++) {
List<T> subList = list.subList(i * groupSize, (i + 1) * groupSize);
result.add(subList);
}
if (remainder == 0) {
result.add(list.subList(i * groupSize, (i + 1) * groupSize));
} else {
result.add(list.subList(i * groupSize, totalCount));
}
return result;
}