stream
stream作为java8中的新特性,是对集合对象功能的加强,专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。
优点:
1.高效率的并行操作
2.有多种功能性的聚合操作
3.函数式编程,使代码更加简洁
stream的使用
- 流程图
-
从数据源中出现流,数据源可以是集合,数组
-
流可以被过滤,排序,映射,每个操作都会返回一个新的流
-
流的操作分为中间操作和终结操作,注意所有中间操作都是惰性的,只有有终结操作时才会执行。
stream和parallelStream的区别
stream是顺序流,由主线程按顺序对流执行操作,而**parallelStream是并行流**,内部以多线程并行执行的方式对流进行操作,*需要注意使用并行流的前提是流中的数据处理没有顺序要求(会乱序,即使用了*forEachOrdered****)****。
几个栗子
-
通过map将row3中的元素映射为数组,再进行两次过滤,最后通过收集器将各个数组转换成集合,最后关闭流
-
Stream.of创建流,reduce中 0.0 为每一次操作的起始值, a最后会得到a+b的值,传入的参数需要声明类型
一些常用api:
- **filter():**根据传入的条件进行过滤
- **toList():**收集流中元素为List
- **toArray():**收集流中元素为Array
- sorted():进行排序
- distinct(): 去重
- map(): 按照传入的规则进行转换
学习资源
(10条消息) 【Java 8系列】Stream详解,看这一篇就够啦_java stream_善良勤劳勇敢而又聪明的老杨的博客-CSDN博客