List 按照指定大小分割為多個list的幾種方式,list分片

loveCrane發表於2024-07-08

如果有一個list<string> 裡面可能有1000份資料,如果需要進行入庫等操作,需要拆分成100每分進行處理,這種需求很常見,那麼應該怎麼做呢?

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的分割的分享就到這裡了 感謝~

相關文章