开发中经常遇到大量数据需要分批处理的场景
1.一般我们是用 do while + sbuList来分割成多批
2.使用stream封闭成工具类,处理简单高效
private static Integer countStep(Integer size, Integer maxNum) {
return (size + maxNum - 1) / maxNum;
}
public static <T> Collection<Collection<T>> subCollection(Collection<T> collections, int maxNum){
int limit = countStep(collections.size(), maxNum);
Collection<Collection<T>> splitCollection = Stream.iterate(
0, n -> n + 1).limit(limit).parallel().map(
a -> collections.stream().skip(a * maxNum).limit(maxNum).parallel()
.collect(Collectors.toList())).collect(Collectors.toList());
return splitCollection;
}
public static void main(String[] args) {
List<String> cams = new ArrayList<>();
cams.add("12321312345645645645");
cams.add("2326766762244565234");
cams.add("3326764546762245644234");
cams.add("243264565667624524234");
cams.add("9245637672445656624234");
cams.add("8274565476565673224234");
cams.add("7264567322456454234");
cams.add("6274564564566733224234");
cams.add("5337656546423224234");
System.out.println(SplitCollectionUtils.subCollection(cams, 4));
}