Stream流操作-结果收集终止方法-最终篇

简介: Stream流操作-结果收集终止方法-最终篇

敲黑板:

关于这里的说明,有小伙伴会提出过疑问,就是这个场景其实使用 String.join() 就可以搞定了,并不需要上面使用 stream 的方式去实现。这里要声明下,Stream的魅力之处就在于其可 以结合到其它的业务逻辑中进行处理,让代码逻辑更加的自然、一气呵成。如果纯粹是个String 字符串拼接的诉求,确实没有必要使用Stream来实现,毕竟杀鸡焉用牛刀嘛~ 但是可以看看下面给出的这个示例,便可以感受出使用Stream进行字符串拼接的真正魅力所在

image.png

数据批量数学运算

还有一种场景,实际使用的时候可能会比较少,就是使用collect生成数字数据的总和信息,也可 以了解下实现方式:

publicvoidtestNumberCalculate() {
List<Integer>ids=Arrays.asList(10, 20, 30, 40, 50);
// 计算平均值Doubleaverage=ids.stream().collect(Collectors.averagingInt(value->value));
System.out.println("平均值:"+average);
// 数据统计信息IntSummaryStatisticssummary=ids.stream().collect(Collectors.summarizingInt(value->value));
System.out.println("数据统计信息: "+summary);
}

上面的例子中,使用collect方法来对list中元素值进行数学运算,结果如下:

平均值:30.0总和:IntSummaryStatistics{count=5, sum=150, min=10, average=30.000000,max=50}

总结

到这里,关于JAVA Stream的相关概念与用法介绍,基本就讲完了。

Stream相较于传统的foreach的方式处理stream,到底有啥优势?

根据前面的介绍,我们应该可以得出如下几点答案:

  • 代码更简洁、偏声明式的编码风格,更容易体现出代码的逻辑意图
  • 逻辑间解耦,一个stream中间处理逻辑,无需关注上游与下游的内容,只需要按约定实现 自身逻辑即可
  • 并行流场景效率会比迭代器逐个循环更高
  • 函数式接口,延迟执行的特性,中间管道操作不管有多少步骤都不会立即执行,只有遇到终 止操作的时候才会开始执行,可以避免一些中间不必要的操作消耗

当然了,Stream也不全是优点,在有些方面也有其弊端:

  • 代码调测debug不便
  • 程序员从历史写法切换到Stream时,需要一定的适应时间
相关文章
|
Rust 算法 安全
【密码学】一文读懂MurMurHash2
上次我们聊过了一代的MurMurHash算法,是的,我又来水文章了,今天呢,接着来聊一下二代的MurMurHash算法,二代算法的整体结构实际上和一代算法差不太多,只是对于每一轮数据的处理过程当中的运算有一些差异,算法的来源依然是来自于Google官网给提供的源码,对着源码看的结构,对于这个算法呢,有两个版本,一个是32位的,一个是64位的,对于32位的算法和64位的算法,区别在于两个初始的魔数不同,整体运算过程还是十分相似的。
2813 0
【密码学】一文读懂MurMurHash2
|
11月前
|
算法
MATLAB在风险管理中的应用:从VaR计算到压力测试
本文介绍如何使用MATLAB进行风险管理,涵盖风险度量(如VaR)、压力测试和风险分解。通过历史模拟法、参数法和蒙特卡洛模拟法计算VaR,评估投资组合在极端市场条件下的表现,并通过边际VaR和成分VaR识别风险来源。结合具体案例和代码实现,帮助读者掌握MATLAB在风险管理中的应用,确保投资组合的稳健性。
qiankun框架中基于actions机制实现主应用与子应用间的双向通信
qiankun框架中基于actions机制实现主应用与子应用间的双向通信
1004 0
|
JavaScript
Vue中 引入使用 vue-splitpane 实现窗格的拆分、调节
Vue中 引入使用 vue-splitpane 实现窗格的拆分、调节
2668 0
Vue中 引入使用 vue-splitpane 实现窗格的拆分、调节
|
Oracle 关系型数据库 数据库
实时计算 Flink版产品使用问题之连接到Oracle数据库但无法读取到数据,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
存储 运维 Java
SpringBoot使用log4j2将日志记录到文件及自定义数据库
通过上述步骤,你可以在Spring Boot应用中利用Log4j2将日志输出到文件和数据库中。这不仅促进了良好的日志管理实践,也为应用的监控和故障排查提供了强大的工具。强调一点,配置文件和代码的具体实现可能需要根据应用的实际需求和运行环境进行调优和修改,始终记住测试配置以确保一切运行正常。
1802 0
Stream流操作-结果收集终止方法-第一篇
Stream流操作-结果收集终止方法-第一篇
262 3
|
前端开发 JavaScript
axios拦截器封装:await遇上reject时catch的优雅处理方式
前端项目中使用 axios 请求接口,基于 axios 二次封装了一些业务逻辑,一般我们会在请求和响应拦截器里添加自己项目相关的业务逻辑
|
SQL 关系型数据库 MySQL
|
存储 分布式计算 Hadoop
HDFS Namenode挂掉后分析解决
HDFS Namenode挂掉后分析解决
485 1