码上敲享录 > java入门知识分享 > java分批次获取List集合数据

java分批次获取List集合数据

上一章章节目录 2023-01-13已有1436人阅读 评论(0)

java分批次处理List集合数据


解决方法:

1、用法

以下代码假如datas有10000个元素,每次分批处理1000个元素,那么以下datasub.stream().forEach会执行10次。

List<HashMap<String,Object>> datas=null;//要分片处理的集合

Collection<Collection<HashMap<String,Object>>> datasub= BatchUtil.subCollection(datas,1000);

datasub.stream().forEach(x->{

//业务处理代码

});



2、工具类

import java.util.Collection;

import java.util.stream.Collectors;

import java.util.stream.Stream;

public class BatchUtil {

   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;

   }

}


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交