Java8函数式接口Consumer的实际应用

在项目开发的过程中,发现有很多业务,需要对一个大的集合做分批处理,于是利用函数式接口Consumer写了一个共通的处理方法,如下

/**
 * 批处理共通方法
 *
 * @param list
 * @param batchSize
 * @param consumer
 * @param 
 */
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是分批后的业务处理方法,自行修改

你可能感兴趣的:(Java,java,开发语言)