当前位置: 首页 > 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 小程序时遇到的问题
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 2017 年终总结 —— 在路上
  • 2017年终总结、随想
  • 2017前端实习生面试总结
  • Codepen 每日精选(2018-3-25)
  • Computed property XXX was assigned to but it has no setter
  • go语言学习初探(一)
  • JavaScript 一些 DOM 的知识点
  • Linux Process Manage
  • maya建模与骨骼动画快速实现人工鱼
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue:响应原理
  • vue自定义指令实现v-tap插件
  • Wamp集成环境 添加PHP的新版本
  • 阿里研究院入选中国企业智库系统影响力榜
  • 基于web的全景—— Pannellum小试
  • 聚簇索引和非聚簇索引
  • 前端之React实战:创建跨平台的项目架构
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 线性表及其算法(java实现)
  • 携程小程序初体验
  • 一起参Ember.js讨论、问答社区。
  • 用mpvue开发微信小程序
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (C语言)二分查找 超详细
  • (二)fiber的基本认识
  • (十三)Maven插件解析运行机制
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .htaccess 强制https 单独排除某个目录
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .Net 高效开发之不可错过的实用工具
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录