当前位置: 首页 > news >正文

将集合拆分成若干个batch,并将batch存于新的集合

在使用saveAll()等方法时,为了防止集合元素过大,使用splitList将原集合,分割成若干个小集合

import java.util.ArrayList;
import java.util.List;public class ListUtils {/*** 将集合拆分成若干个batch,并将batch存于新的集合** @param list 目标集合* @param size batch大小*             List m: [a, b, c, d, e, f, g]*             -> splitList(m, 3)*             -> [[a, b, c], [d, e, f], [g]]* @return List<Batch>*/public static <T> List<List<T>> splitList(List<T> list, int size) {//集合为空时,返回nullif (list == null){return null;}//分割后的集合套集合List<List<T>> l1 = new ArrayList<>();//如果分割size>=集合size,那就没必要分割if (list.size() <= size){l1.add(list);} else {//集合sizeint s = list.size();//x=新的集合套集合的sizeint x = s / size;//y=新的集合套集合最后一个子集合的sizeint y = s % size;if (y != 0){x = x + 1;}int index = 0;for (int i = 0; i < x; i++) {List<T> l2 = new ArrayList<>();for (int j = 0; j < list.size(); j++) {//按原集合给subList装元素,l2.add(list.get(index));index++;//当达到sublist个数size装满时,跳出循环if (l2.size() == size) {l1.add(l2);break;//最后一个subList时} else if (x == l1.size() + 1 && y == l2.size()) {l1.add(l2);break;}}}}return l1;}
}

数据库批处理操作

if (bigList.size() > 0) {for (List<CustomTableBean> subList : ListUtils.splitList(bigList, 100)) {int rows = customMapper.insertAll(subList);log.info("insert data size is " + rows);try {Thread.sleep(50);} catch (InterruptedException e) {log.error(e.printStackTrace(););}}
}
http://www.lryc.cn/news/626948.html

相关文章:

  • ubuntu下安装vivado2015.2时报错解决方法
  • 换根DP(P3478 [POI 2008] STA-StationP3574 [POI 2014] FAR-FarmCraft)
  • Qt 中最经典、最常用的多线程通信场景
  • 通过自动化本地计算磁盘与块存储卷加密保护数据安全
  • 链表-24.两两交换链表中的结点-力扣(LeetCode)
  • ansible playbook 实战案例roles | 实现基于firewalld添加端口
  • SSM从入门到实战:2.1 MyBatis框架概述与环境搭建
  • 【LeetCode 热题 100】279. 完全平方数——(解法三)空间优化
  • innovus auto_fix_short.tcl
  • 代码随想录Day57:图论(寻宝prim算法精讲kruskal算法精讲)
  • 3D检测笔记:相机模型与坐标变换
  • 今日行情明日机会——20250820
  • 算法提升树形数据结构-(线段树)
  • 数据结构与算法系列(大白话模式)小学生起点(一)
  • 关于 Flask 3.0+的 框架的一些复习差异点
  • 算法230. 二叉搜索树中第 K 小的元素
  • 雷卯针对香橙派Orange Pi 5B开发板防雷防静电方案
  • 力扣hot100:最大子数组和的两种高效方法:前缀和与Kadane算法(53)
  • Deepseek+python自动生成禅道测试用例
  • 自动化测试用例生成:基于Python的参数化测试框架设计与实现
  • 记一次pnpm start启动异常
  • Spring Boot 3整合Nacos,配置namespace
  • 质谱数据分析环节体系整理
  • Rust 入门 包 (二十一)
  • 内网环境给VSCode安装插件
  • PostgreSQL 流程---更新
  • 基于51单片机自动浇花1602液晶显示设计
  • Notepad++批量转UTF-8脚本
  • 测试DuckDB插件对不同格式xlsx文件的读写效率
  • 基于Pytochvideo训练自己的的视频分类模型