在项目开发的过程中,发现有很多业务,需要对一个大的集合做分批处理,于是利用函数式接口Consumer写了一个共通的处理方法,如下
/**
* 批处理共通方法
*
* @param list
* @param batchSize
* @param consumer
* @param <T>
*/
public static <T> void batchProcess(List<T> list, int batchSize, Consumer<List<T>> consumer) {
//计算分成了多少批次
int batchCount = (list.size() + batchSize - 1) / batchSize;
for (int i = 0; i < batchCount; i++) {
int startIndex = i * batchSize;
int endIndex = Math.min((i + 1) * batchSize, list.size());
List<T> batchList = list.subList(startIndex, endIndex);
consumer.accept(batchList);
}
}
调用方式
batchProcess(list, batchSize, batchList -> doSomething(batchList));
其中的doSomething是分批后的业务处理方法,自行修改
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154477.html