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

List集合拆分为多个List

list 拆分

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.list 拆分是
      • 2.用stream的parallel实现list的分批处理
      • 3.使用stream的parallel实现list的分批处理
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

list 拆分是一个常见的需求。

需求:

list 拆分是一个常见的需求。

设计思路

实现思路分析

1.list 拆分是

        // 创建模拟listList<Integer> dataList = new ArrayList<>();for (int i = 1; i <= 22; i++) {dataList.add(i);}// 每批次数据记录数量int partialLimit = 10;//判断是否有必要分批if (partialLimit < dataList.size()) {//当前数据按限制条数可分为多少批次int part = dataList.size()/partialLimit;List<Integer> partList;for (int i = 0; i < part; i++) {// 截取批次长度的listpartList = dataList.subList(0, partialLimit);// 分批业务逻辑处理- 打印替代System.out.println("分割出口的数据: "+partList);// 去除已经处理的部分 (Arrays.asList()方式生成的数据不能进行此修改操作,会报错)partList.clear();System.out.println("剩余数据: "+dataList);}// 获取最后一次截取后的剩余列表数据if (!dataList.isEmpty()) {// 业务逻辑数据处理, - 打印替代System.out.println(dataList);}} else {System.out.println("数据不需要分批,直接进行业务逻辑处理!");}

2.用stream的parallel实现list的分批处理

        // 按每5个一组分割int partialLimit = 5;List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7,8,9,10);// 获取需要分割的次数,注意不能直接除以批次数量int limit = (list.size()+partialLimit -1)/partialLimit;// 使用流遍历操作List<List<Integer>> arrayList = new ArrayList<>();Stream.iterate(0, n -> n + 1).limit(limit).forEach(i -> {arrayList.add(list.stream().skip((long) i * partialLimit).limit(partialLimit).collect(Collectors.toList()));});System.out.println(arrayList);

3.使用stream的parallel实现list的分批处理

        // 按每5个一组分割int partialLimit = 5;List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7,8,9,10);// 获取需要分割的次数,注意不能直接除以批次数量,会丢失数据;int limit = (list.size()+partialLimit -1)/partialLimit;// 获取分割后的集合List<List<Integer>> splitList = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> list.stream().skip((long) a * partialLimit).limit(partialLimit).parallel().collect(Collectors.toList())).collect(Collectors.toList());// 执行具体业务方法。打印代替System.out.println(splitList);

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐
1.https://www.cnblogs.com/ChenQ2/p/16636306.html
2.https://www.cnblogs.com/ChenQ2/p/16636306.html

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~

http://www.lryc.cn/news/196568.html

相关文章:

  • Hadoop3教程(十三):MapReduce中的分区
  • 笔记本Win10系统一键重装操作方法
  • FilterRegistrationBean能不能排除指定url
  • 【LeetCode】36. 有效的数独
  • 华为---PPP协议简介及示例配置
  • asp.net老年大学信息VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计
  • 模型量化笔记--对称量化和非对称量化
  • PA2019 Terytoria
  • 内容分发网络CDN分布式部署真的可以加速吗?原理是什么?
  • 微服务docker部署实战
  • js实现拖拽功能
  • 数据库主从切换过程中Druid没法获取连接错误
  • 【iOS】Mac M1安装iPhone及iPad的app时设置问题
  • Springboot 启动报错@spring.active@解析错误
  • 【算法挨揍日记】day15——560. 和为 K 的子数组、974. 和可被 K 整除的子数组
  • 数字时代的探索与革新:Socks5代理的引领作用
  • 算法-堆/归并排序-排序链表
  • word 如何编写4x4矩阵
  • INTELlij IDEA编辑VUE项目
  • linux进程间通讯--信号量
  • VS Code连接远程Linux服务器开发c++项目
  • stable diffusion的模型选择,采样器选择,关键词
  • BI零售数据分析:以自身视角展开分析
  • Maven 使用教程(三)
  • 行秋找工作的记录
  • vue项目打包,使用externals抽离公共的第三方库
  • 九阳真经之各大厂校招
  • Go语言入门心法(五): 函数
  • gitignore文件的语法规则
  • vscode提示扩展主机在过去5分钟内意外终止了3次,解决方法