java8的stream与InputStream和OutputStream是完全不同的概念,stream是用于对集合迭代器的增强,使之完成能够完成更高下搜的聚合操作(过滤、排序、统计分组)或者大批量数据操作。此外stream与lambda表达式结合后编码效率提高,并且可读性更强。

Stream流执行机制
image.png

流的操作特性

  1. 不存储数据;
  2. 不改变源数据;
  3. 不可重复使用;

    流的操作特性

    stream所有操作组合在一起即变成管道,管道中有以下两种操作:
  • 中间操作(intermediate):调用中间操作方法回返回一个新的流。通过连续执行多个操作就组成了stream中的执行管道(pipeline)。需要注意的是这些管道被添加后并不会真正执行,只有等到调用终值操作之后才会执行;中间操作是惰性的;中间操作有多次;例如:filter()
  • 终值操作(terminal):在调用该方法后,将执行之前所有的中间操作,获返回结果结束对流的使用;终值操作只能有一次,并且只能在流最后;例如:collect()

image.png
stream流中:方法返回值是stream的都是中间操作,返回Optional的是终值操作,静态方法除外;
流的执行顺序说明:其每个元素挨着作为参数去调用中间操作及终值操作。而不是遍历完一个方法,再遍历下一个方法;
image.png
stream流并发执行
image.png