????????通常我們對(duì)集合的更新或者保存都需要用集合來(lái)承載通過(guò)插入的效率,但是這個(gè)會(huì)遇到一個(gè)問(wèn)題就是你不知道那天那個(gè)集合的數(shù)量可能就超了,雖然我們連接數(shù)據(jù)庫(kù)進(jìn)行批量提交會(huì)在配置上配置allowMultiQueries=true,但是太長(zhǎng)了也一樣會(huì)會(huì)報(bào)錯(cuò),這樣我們就只能分批查詢或者分批插入,需要把大集合拆分成小集合數(shù)據(jù),希望接下來(lái)的案例可以幫到您。
??拆分案例
//大集合分割成小集合
@Test
public void sliceListTest(){
List<Order> orderList = new ArrayList<>();
//模擬需要查詢出來(lái)的數(shù)據(jù)進(jìn)行批量處理
for (int i = 0; i < 10500; i++) {
Order order = new Order();
order.setId(System.currentTimeMillis());
order.setOrderNo(UUID.randomUUID().toString());
orderList.add(order);
}
//返回要求的小集合數(shù)據(jù)內(nèi)容
List<List<Order>> lists = sliceList(1000, orderList);
for (List<Order> list : lists) {
//小集合的數(shù)據(jù)
List<Order> orders = list;
//按照自己的業(yè)務(wù)處理邏輯,我這邊就打印長(zhǎng)度
System.out.println(orders.size());
}
}
/**
* 集合拆分
* @param batchSize 小集合的容量
* @param list 大集合
* @param <T> 泛型
* @return
*/
public static <T> List<List<T>> sliceList(int batchSize, List<T> list) {
List<List<T>> batches = new ArrayList<>();
for (int i = 0; i < list.size(); i += batchSize) {
int end = Math.min(i + batchSize, list.size());
List<T> batch = list.subList(i, end);
batches.add(batch);
}
return batches;
}
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-691758.html
??拆分的核心代碼
核心代碼 : 大集合分割成小集合,這里使用到泛型T,這樣我們就可以把該方法提供成公共方法,由調(diào)用方?jīng)Q定把集合拆成多大。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-691758.html
public static <T> List<List<T>> sliceList(int batchSize, List<T> list) {
List<List<T>> batches = new ArrayList<>();
for (int i = 0; i < list.size(); i += batchSize) {
int end = Math.min(i + batchSize, list.size());
List<T> batch = list.subList(i, end);
batches.add(batch);
}
return batches;
}
到了這里,關(guān)于大集合按照指定長(zhǎng)度進(jìn)行分割成多個(gè)小集合,用于批量多次處理數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!