Java将List数据拆分进行分批处理

最近碰到一个问题,如果将一个数据量比较大的List数据发送到服务器上,这样的批量操作可能会由一个小错误导致整个请求无法实现,这个时候我们就可以考虑将List进行拆分,分批处理,降低失误率。

考虑到List中并没有实现sublist的方法,所以我们可以自己实现一个sublist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* 将list拆分成指定数量的小list
* 注: 使用的subList方式,返回的是list的内部类,不可做元素的删除,修改,添加操作
* @param length 数量
* @param list 大list
*/
public List<List<T>> getSubList(int length, List<T> list){
int size = list.size();
int temp = size / length + 1;
boolean result = size % length == 0;
List<List<T>> subList = new ArrayList<>();
for (int i = 0; i < temp; i++) {
if (i == temp - 1) {
if (result) {
break;
}
subList.add(list.subList(length * i, size)) ;
} else {
subList.add(list.subList(length * i, length * (i + 1))) ;
}
}
return subList;
}

参考资料:Java中将大list拆分成多个小list,分批操作