Java将List按指定数量拆分成多个的两种实现方法

本文介绍了如何将大型List拆分成多个小List,以适应如SQL IN子句的长度限制。首先,我们提到了使用Google Guava库的Lists.partition方法,这需要引入Guava依赖。然后,我们也提供了一个自定义的Java方法来实现相同功能,避免引入额外的库。这两种方法都能有效地将集合按指定数量进行分割。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

有时候我们需要将大集合按指定的数量分割成若干个小集合。(比如:集合作为SQL中IN的参数,而SQL又有长度限制,所以需要分批分几次进行查询)

1、使用google guava对List进行分割

需要引入google guava依赖,引入后可以使用,简单方便但是需要引入额外依赖

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>

拆分调用

 List<T> list = new ArrayList();
//拆分list
List<List<T>> partition = Lists.partition(list , 200);

2、自己手写方法实现将List<T>拆分成N个

List<T> list = new ArrayList();
//拆分list
List<List<T>> partition = Lists.partition(list , 200);/**
     * 按指定大小,分隔集合,将集合按规定个数分为n个部分
     * 
     * @param <T>
     * 
     * @param list
     * @param len
     * @return
     */
    public static <T> List<List<T>> splitList(List<T> list, int len) {

        if (list == null || list.isEmpty() || len < 1) {
            return Collections.emptyList();
        }

        List<List<T>> result = new ArrayList<>();

        int size = list.size();
        int count = (size + len - 1) / len;

        for (int i = 0; i < count; i++) {
            List<T> subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1)));
            result.add(subList);
        }

        return result;
    }

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值