package com.utils;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
/**
* 拆分list的通用方法
*
* @author 阿尔卑斯山大煎蛋
* @date 2022/7/1 13:14
*/
@Slf4j
public class SplitListUtil {
/**
* 默认分组数量
*/
private static final int DEFAULT_NUMBER_OF_GROUPS = 2000;
/**
* 按照count拆分成多个list
*
* @param lists 数据源列表
* @param num 以num进行分组
* @return <T> List<List<T>>
*/
public static <T> List<List<T>> splitList(List<T> lists, int num) {
int baseCount;
if (num == 0) {
// 传0的话默认按2000分一组
baseCount = DEFAULT_NUMBER_OF_GROUPS;
} else {
baseCount = num;
}
List<List<T>> result = new ArrayList<>();
if (lists != null) {
//记录数量
int length = lists.size();
int time = length / num;
//计算拆分几条
time = length % num > 0 ? time + 1 : time;
int end;
List<T> tmpList;
for (int i = 1, start = 0; i <= time; i++) {
if (i == time) {
end = length;
} else {
end = i * baseCount;
}
tmpList = lists.subList(start, end);
start = end;
result.add(tmpList);
}
}
return result;
}
}
拆分list工具类
于 2022-07-01 18:26:31 首次发布