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

【杂记】java 大集合进行拆分

日常中需要对一个大的集合进行拆分成多个小集合,其主要思路为:

  1. 设置需要拆分多少个小集合 A
  2. 大集合里面有多少条数据 B
  3. 计算出每个集合里面有多个条数据 C=B/A
  4. 计算出看是否存在余数 D=B%A
  5. 采用集合(List.subList())的方法对大集合进行拆分,循环A变进行集合拆分(List.subList((A-1)*C,(A-1)*C+(C-1))
  6. 如果存在余数D,则需要将剩余的数据放在一个集合中 (List.subList((AC,AC+D)

代码如下:

 /*** 集合切分(将一个1002大小的集合,拆分为5个小集合)* @param list 目标集合* @param partitionSize 需要拆分集合的个数* @param <T> 泛型对象* @return 切分后的总的集合*/public static <T> List<List<T>> listPartition(List<T> list, int partitionSize) {//①如果集合时空的或者初始设置的集合大小小于等于0,返回一个新集合if (list.isEmpty() || partitionSize <= 0) {return new ArrayList();}//②封装最后返回的结果集的集合List<List<T>> listResult = new ArrayList<>();int size = list.size();//③如果目标集合的大小小于设置集合的大小,将目标集合,全部加载到封装结果集中,返回结束if (size <= partitionSize) {listResult.add(list);return listResult;}//④计算出拆分的集合的大小(size =1002, partitionSize= 5  partitionNum =200 partitionRemainder=2)int partitionNum = size / partitionSize;//⑤计算出最后一个拆分集合的大小int partitionRemainder = size % partitionSize;for (int a = 1; a <= partitionSize; a++) {//⑥对目标集合进行截取 ((1-1)*200,((1-1)*200)+(200-1))List<T> ts = list.subList((a - 1) * partitionNum, ((a - 1) * partitionNum) + (partitionNum - 1));listResult.add(ts);}//⑦如果最后一个拆分集合的大小大于0if (partitionRemainder > 0) {//⑧对目标集合进行截取 ((200*5,200*5+2)List<T> ts = list.subList(partitionNum * partitionSize, partitionNum * partitionSize + partitionRemainder);listResult.add(ts);}//⑨返回结果集return listResult;}
http://www.lryc.cn/news/212736.html

相关文章:

  • select...for update 锁表了?
  • 使用ControlNet生成视频(Pose2Pose)
  • 基于Docker使用Minikube
  • Stable Diffusion系列(一):古早显卡上最新版 WebUI 安装及简单操作
  • ruoyi框架前端vue部署生产环境教程
  • leetcode第369周赛
  • 如何在维格云中自动新增一行或多行数据?
  • Three.js 开发引擎的特点
  • k8s声明式资源管理方式
  • unity性能优化__Statistic状态分析
  • Linux Spug自动化运维平台公网远程访问
  • 3DES算法
  • 手机电池寿命检测
  • Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios
  • AVL树、红黑树的介绍和实现[C++]
  • meta分析的异质性检验指标如何计算?
  • 如何在mac 安装 cocos 的 android环境
  • 作为网工有必要了解一下什么是SRv6?
  • Jmeter(十八):硬件性能监控指标详解
  • 【ARM Trace32(劳特巴赫) 使用介绍 2 -- Trace32 cmm 脚本基本语法及常用命令】
  • 2023年第七期丨全国高校大数据与人工智能师资研修班
  • 一文获取鼎捷医疗器械行业数智化合规敏态方案
  • 2023最新版本 FreeRTOS教程 -1-标准库移植FreeRTOS
  • python笔记(函数参数、面向对象、装饰器、高级函数、捕获异常)
  • JAVA命令总结
  • 删除的PPT怎么找回来?4个必备恢复方法!
  • Binder机制总结笔记
  • SQL SERVER 表分区
  • 从零开始学习PX4源码0(固件下载及编译)
  • centos格式化硬盘/u盘的分区为NTFS格式