splitlistutils.split
时间: 2023-10-04 16:04:13 浏览: 60
splitList是一个方法,它位于ListUtil类中。这个方法用于将一个列表分割成多个子列表,每个子列表的大小由limit参数确定。方法的返回值是一个包含分割后子列表的列表。方法的实现如下所示:
```java
public static <T> List<List<T>> splitList(List<T> list, int limit){
List<List<T>> lists = new ArrayList<>();
if(CollectionUtils.isEmpty(list)){
return lists;
}
int total = list.size();
long remain = total % limit; // 确认是否有余数
long times = total / limit; // 要分裂的次数
int count = remain == 0 ? times : times + 1; // 如果有余数,则多分裂一次
for(int i=0; i < count; i++){
List<T> appList = list.stream().skip(i*limit).limit(limit).collect(Collectors.toList());
lists.add(appList);
}
return lists;
}
```
这个方法可以用于将一个列表按照指定的大小分割成多个子列表。使用示例可以如下所示:
```java
List<List<BatchList>> lists = ListUtil.splitList(list,5000);
// 一次插入5000条
for(List<BatchList> sublist : lists){
xxxDAO.insert(sublist); // 数据持久层 保存入库
}
```
在这个示例中,ListUtil类的splitList方法被用于将名为list的列表按照每个子列表包含5000个元素的大小进行分割。然后,通过循环遍历分割后的子列表,并将每个子列表传递给数据持久层的insert方法进行保存入库操作。这样可以有效地处理大型列表,并且可以通过多线程操作进一步提高处理效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Listutil.SplitList 工具类方法编写,大量数据分批插入](https://blog.csdn.net/weixin_72014003/article/details/131322243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *3* [多线程操作List](https://blog.csdn.net/weixin_42740540/article/details/125804171)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]