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