当前位置: 首页 > 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.dtcms.com/a/341221.html

相关文章:

  • WMS仓储管理系统如何解决仓库的呆滞库存
  • 鸿蒙安卓前端中加载丢帧:ArkWeb分析
  • 第5.7节:awk赋值运算
  • IPSEC安全基础
  • Qt 中最经典、最常用的多线程通信场景
  • TDengine IDMP 运维指南(数据导入导出)
  • WIN10/WIN11:无法下载所有必需的文件 0x80072EE2 0x20000(未解决)
  • C++ std::sort的应用总结
  • Unity 大量子弹和小怪碰撞检测优化
  • GSPO:Towards scalable reinforcement learning for language models
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型和EasyOCR实现汽车牌照动态检测和识别(C#代码,UI界面版)
  • 使用UUP dump制作windows preview镜像
  • 手机、汽车如何实现卫星直连
  • imx6ull-驱动开发篇31——Linux异步通知
  • 玩转QEMU硬件模拟器 - Raspberry Pi OS驱动开发
  • 【项目复盘】【四轴飞行器设计】驱动开发部分
  • Redis 安装教程
  • 【数据结构之二叉树】
  • 【openssl】openssl CA.pl 签发证书操作步骤
  • redis执行lua脚本的原子性和数据库原子性的区别
  • [激光原理与应用-315]:光学设计 - SolidWorks, 光机系统设计的神器,打通光学与机械设计的闭环
  • Tomcat部署与HTTP协议详解
  • 佳维视工业一体机在公共交通系统配套中的应用
  • 疯狂星期四文案网第45天运营日记
  • LTspice仿真电路:(三十五)LED恒流驱动仿真(LT3497)
  • burpsuite+captcha-killer插件识别图片验证码进行爆破
  • AiPy 文档自动化处理实践:从 docx 到结构化 db 的高效转换方案
  • 华为仓颉语言的class(类)初步
  • ES Modules +案例分析
  • 【C++】动态导入Windows系统API的简单方法