List 按照指定大小分割为多个list的几种方式,list分片

如果有一个list<string> 里面可能有1000份或者更多数据,如果需要进行入库等操作,需要拆分成指定大小每份进行处理,这种需求很常见,那么应该怎么做呢?

首先我们需要将 List<String>  转为多份后 进行逐个处理,  处理批量事务注意事务哦

 

那么怎么将list转为多份呢?  下面介绍2中方式

 

1:自己写一个方法处理

import com.google.common.collect.Lists;

//自定义分片方法
private static List<List<String>> subList(List<String> list, int batchSize){
        List<List<String>> subList = Lists.newArrayList();
        for (int i = 0; i < list.size(); i += batchSize) {
            int end = i + batchSize;
            if (end > list.size()) {
                end = list.size();
            }
            subList.add(list.subList(i, end));
        }
        return subList;
    }

//测试方法
public static void main(String[] args) {
        //准备一个list 11个值
        List<String> list = Lists.newArrayList("1", "2", "3", "4", "5", "6", "7","8", "9", "10", "11");

        //每3个分片调用上面的方法
        List<List<String>> lists = subList(list, 3);
        System.out.println(lists);
    }

//运行后的结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]

测试:

2:使用google包

import com.google.common.collect.Lists;

public static void main(String[] args) {
        //准备一个list 11个值
        List<String> list = Lists.newArrayList("1", "2", "3", "4", "5", "6", "7","8", "9", "10", "11");

        //每3个分片调用Lists.partition的方法
        List<List<String>> partition = Lists.partition(list, 3);
        System.out.println(partition);
    }

//运行结果:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]

 

 

可以看到,两种方法都可以实现将一个list 分割成多个list    这里推荐使用第二种,方便简单, 如果有自定义的需求再将第一个方法改造

关于list的分割的分享就到这里了  感谢~

posted @ 2024-07-08 14:06  loveCrane  阅读(1)  评论(0编辑  收藏  举报