如何将数组列表拆分为相等的部分?

2022-09-01 09:10:26

在运行时之前,是否无论如何都要将ArrayList拆分为不同的部分,而不知道它的大小?我知道有一个方法叫做:

list.subList(a,b);

但是我们需要明确提到列表的凝视和结束范围。我的问题是,我们得到一个包含帐号的数组列表,其中包含2000,4000个帐号之类的数据(在编码期间不会知道数字),我需要将此asac nos传递到PL / SQL的IN查询中,因为IN不支持超过1000个值,我试图分成多个块并将其发送到查询

注意:我不能使用任何外部库,如番石榴等。:(任何这方面的指导都是值得赞赏的。


答案 1

这应该给你所有的零件:

int partitionSize = 1000;
List<List<Integer>> partitions = new LinkedList<List<Integer>>();
for (int i = 0; i < originalList.size(); i += partitionSize) {
    partitions.add(originalList.subList(i,
            Math.min(i + partitionSize, originalList.size())));
}

答案 2

通用函数 :

public static <T> ArrayList<T[]> chunks(ArrayList<T> bigList,int n){
    ArrayList<T[]> chunks = new ArrayList<T[]>();

    for (int i = 0; i < bigList.size(); i += n) {
        T[] chunk = (T[])bigList.subList(i, Math.min(bigList.size(), i + n)).toArray();         
        chunks.add(chunk);
    }

    return chunks;
}

享受它〜:)


推荐