言
与IO流的 Input/Output Stream 不同,Stream 流操作是一个单向的数据处理操作,它不负责数据的储存。可以将Stream流看做是对集合操作功能的增强,可以对集合的各种高效、便利的聚合操作( 类似SQL语句一样的操作, 比如filter,map,sorted等)。同时配合Lambda表达式,极大的提升代码的优雅度。
Stream流不同于其他集合框架,它也不是某种数据结构,它并不会存储元素,而是按需计算,这让它使用起来更像一个高级的迭代器。
Stream不会改变数据源,通常情况下会产生一个新的集合或一个值。
一个标准的Stream流流程:
数据源(创建流) -> 数据处理 / 转换(中间操作) -> 结果处理(终端操作)
中间操作会再次返回一个流,所以我们可以链接多个中间操作;终端操作是对流操作的一个结束动作,一般返回 void或者一个非流的结果。
Stream流具有延迟执行特性,也就是说中间操作不会立即执行,只有调用终端操作的时候,流才会开始中间操作(遍历、映射、过滤等)。并且Stream流提供了并行操作方式,在使用并行计算方式时数据会被自动分解成多段然后并行处理,最后将结果汇总,极大提升程序运行效率。