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时,需要一定的适应时间
相关文章
|
7月前
|
Java
java有3个独立的线程,一个只会输出A,一个只会输出L,一个只会输出I。在三个线程同时启动的情况下,如何让它们按顺序打印ALIALI。
java有3个独立的线程,一个只会输出A,一个只会输出L,一个只会输出I。在三个线程同时启动的情况下,如何让它们按顺序打印ALIALI。
66 1
|
24天前
|
Java
Java——Stream流(2/2):Stream流的中间方法、终结方法(方法、案例演示)
Java——Stream流(2/2):Stream流的中间方法、终结方法(方法、案例演示)
31 0
|
2月前
|
JavaScript 前端开发 Java
流的概念,怎么处理
流的概念,怎么处理
|
10月前
Stream流操作-简单结果终止方法
Stream流操作-简单结果终止方法
80 0
|
12月前
|
存储
Stream流中各阶段方法说明及组合示例
Stream流中各阶段方法说明及组合示例
80 1
|
2月前
|
容器
这个错误是因为在读取文件时,管道已经结束
【1月更文挑战第14天】【1月更文挑战第67篇】这个错误是因为在读取文件时,管道已经结束
64 4
|
7月前
|
消息中间件 存储 中间件
消息流是指在计算机系统中,消息从一个地方传递到另一个地方的过程
消息流是指在计算机系统中,消息从一个地方传递到另一个地方的过程
49 1
|
10月前
Stream流操作-结果收集终止方法-第一篇
Stream流操作-结果收集终止方法-第一篇
43 3
|
12月前
|
存储 Java
流及其相关操作
流及其相关操作
|
存储
Stream流终结操作方法、收集操作及Stream综合练习
Stream流终结操作方法、收集操作及Stream综合练习
104 0