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

通过Stream流对集合进行操作

Stream Api是JDK8提供的新特性,可以更为方便地对集合进行操作,比如我今天遇到的一个场景:
将本地的一个视频文件分成多块上传到Minio服务器,现在上传功能已经完成,需要调用minioClient对已经上传的文件重新合并成一个新的视频文件。
代码如下:
如图sources需要我们自己去构建,打开源码发现需要List sources 集合,这玩意儿就是保存分块文件的一个集合,需要我们自己去构建
在这里插入图片描述
在这里插入图片描述
一般的构建方法就是如下代码:往ArrayList中填ComposeSource类包装的分块文件

        ArrayList<ComposeSource> sources = new ArrayList<>();for (int i = 0; i < 7; i++) {//指定分块文件的信息ComposeSource testbucket =ComposeSource.builder().bucket("testbucket").object("chunk/" + i).build();sources.add(testbucket);}

用Stream去写这个代码则会简介很多:
一句代码解决问题
1.Stream.iterate(0, i -> ++i):创建一个无限序列,从 0 开始,每次迭代时通过 i -> ++i 函数(一个 lambda 表达式)增加当前值。这里 i -> ++i 表示使用当前值 i,然后对其进行递增操作。

2.limit(7):使用 limit 方法来截取流的前 7 个元素,因为 iterate 创建的是无限序列,所以需要限制结果的数量。

3.map(i ->:使用 map 方法来转换流中的每个元素。这里的转换是创建一个新的 ComposeSource 对象。
4.collect(Collectors.toList()):使用 collect 方法和 Collectors.toList() 收集器来将流中的元素收集到一个列表中。

  List<ComposeSource> sources = Stream.iterate(0, i -> ++i).limit(7).map(i ->ComposeSource.builder().bucket("testbucket")//桶.object("chunk/" + i)//存的地址、文件名.build()).collect(Collectors.toList());

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PHP聚合通多平台支付平台源码
  • 关于stm32的软件复位
  • spark MLlib (DataFrame-based) 中的聚类算法Bisecting K-Means、K-Means、Gaussian Mixture
  • 美丽的拉萨,神奇的布达拉宫
  • 项目实战系列——WebSocket——websock简介
  • 微服务之远程调用
  • 安装好IDEA后,就能够直接开始跑代码了吗?
  • 助力高考,一组彩色的文字
  • 趣谈网络协议
  • 第七章 Three.js 动画与交互
  • 热门开源项目推荐:技术与地址概览
  • laravel8使用中间件实现xss处理
  • 简单说一下STL中的map容器的特点、底层实现和应用场景【面试】
  • 【云原生】Kubernetes----Rancher助力Kubernetes监控
  • 开发uniapp 小程序时遇到的问题
  • css属性的继承、初识值、计算值、当前值、应用值
  • express如何解决request entity too large问题
  • Java编程基础24——递归练习
  • Java应用性能调优
  • java中具有继承关系的类及其对象初始化顺序
  • Node项目之评分系统(二)- 数据库设计
  • Python进阶细节
  • Redis的resp协议
  • select2 取值 遍历 设置默认值
  • TypeScript实现数据结构(一)栈,队列,链表
  • 记录:CentOS7.2配置LNMP环境记录
  • 聊一聊前端的监控
  • 物联网链路协议
  • 学习笔记:对象,原型和继承(1)
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (04)odoo视图操作
  • (4.10~4.16)
  • (二)JAVA使用POI操作excel
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (小白学Java)Java简介和基本配置
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)Google的Objective-C编码规范
  • (转)Unity3DUnity3D在android下调试
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *Django中的Ajax 纯js的书写样式1
  • .md即markdown文件的基本常用编写语法
  • .NET Core 发展历程和版本迭代
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • .NET轻量级ORM组件Dapper葵花宝典