@Slf4j
public class SplitListUtil {
public static <T> List<List<T>> splitList(List<T> sourceList){
List<List<T>> list = new ArrayList<>();
if (CollectionUtils.isEmpty(sourceList)){
return list;
}
if (sourceList.size() < 1000){
list.add(sourceList);
return list;
}
Double ceil = Math.ceil(Double.valueOf(sourceList.size()) / 1000);
int listCount = ceil.intValue();
Double floorSize = Math.ceil(Double.valueOf(sourceList.size()) / listCount);
int subListSize = floorSize.intValue();
boolean last = true;
int maxSize = 0;
for (int i = 0; i < listCount; i++) {
List<T> listSub = new ArrayList<>();
int i1 = i * (subListSize);
if (last){
maxSize = (i + 1) * (subListSize);
}
for (int j = i1; j < maxSize; j++) {
listSub.add(sourceList.get(i1 ++));
}
System.out.println("listSub====>" + listSub.size());
list.add(listSub);
if (sourceList.size() - maxSize <= floorSize){
maxSize = sourceList.size();
last = false;
}
}
return list;
}
public static void main(String[] args) {
List<Integer> arrayList = new ArrayList<>();
for (int i = 0; i < 50001; i++) {
arrayList.add(i);
}
List<List<Integer>> lists = SplitListUtil.splitList(arrayList);
System.out.println(lists.size());
System.out.println(lists);
}
}
拆分List
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 背景:项目中遇到根据项目id集合去别的系统,发网络请求拿数据。但是如果一次性去获取,那边运算非常慢,会超时。所以要...
- 今天在用python写一个简单的算法时,遇到了list分组的问题,即将一个比较长的list拆分为多个子list,从...