Java List数据量大, 需要分片批次操作

很久前,写过关于list数据量大,分批处理的相关介绍文章(自定义的java代码实现):
SSM Mybatis 批量插入 采用分批处理一次500条_默默不代表沉默-CSDN博客_mybatis分批插入

 

该篇再带来两种 我认为使用挺方便的 分批方式:

1. 使用 apache 的工具包 :
 

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>

代码示例:

ListUtils.partition

        List<Integer> list=new ArrayList<>();
        for (int i=0;i<500;i++){
            list.add(i);
        }
        List<List<Integer>> newList = Lists.partition(list, 150);
        for (List<Integer> list1:newList){
            System.out.println(list1.size());
        }

 结果输出:

 

2.使用guava的工具包 :
 

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

 代码示例:
 

Lists.partition

        List<Integer> list=new ArrayList<>();
        for (int i=0;i<500;i++){
            list.add(i);
        }
        List<List<Integer>> newList = Lists.partition(list, 150);
        for (List<Integer> list1:newList){
            System.out.println(list1.size());
        }

结果输出:

当然还有其他工具包也是封装了这些list分批的函数的,但是我只介绍这两种吧。 

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java中,可以使用分批次查询数据的方式来处理大数据集。这种方式可以有效地减少内存使用和提高查询效率。 以下是一种分批次查询数据的示例代码: ```java int batchSize = 1000; // 每次查询的数据 int offset = 0; // 数据偏移 boolean hasMoreData = true; // 是否还有更多数据 while (hasMoreData) { List<Data> dataList = queryData(batchSize, offset); // 查询数据 if (dataList.isEmpty()) { hasMoreData = false; // 没有更多数据了 } else { processData(dataList); // 处理数据 offset += batchSize; // 偏移增加 } } private List<Data> queryData(int batchSize, int offset) { // 执行查询语句,返回 batchSize 条数据,偏移为 offset } private void processData(List<Data> dataList) { // 处理数据 } ``` 在上面的示例代码中,我们首先定义了每次查询的数据 batchSize 和数据偏移 offset,然后使用一个 while 循环来不断查询和处理数据。在每次循环中,我们调用 queryData() 方法来查询 batchSize 条数据,如果返回的数据为空,说明没有更多数据了,循环结束;否则,我们调用 processData() 方法来处理查询到的数据,然后将偏移 offset 增加 batchSize,以便下一次查询从正确的位置开始。 需要注意的是,queryData() 方法需要根据具体情况来实现,可以使用 JDBC 或其他 ORM 框架来执行查询语句。在实现过程中,还需要考虑到数据的排序和过滤条件等问题,以确保查询结果的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小目标青年

对你有帮助的话,谢谢你的打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值