一、流的概念,与集合的异同
1、流
集合的stream方法,它会返回一个流,可以看成遍历数据集的高级迭代器。简单的定义 “从支持数据处理操作的源生成的元素序列”。
元素序列——就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序 值。因为集合是数据结构,所以它的主要目的是以特定的时间/空间复杂度存储和访问元 素(如ArrayList 与 LinkedList)。但流的目的在于表达计算,比如 filter、sorted和map方法。集合讲的是数据,流讲的是计算。
源——流会使用一个提供数据的源,如集合、数组或输入/输出资源。 请注意,从有序集 合生成流时会保留原有的顺序。由列表生成的流,其元素顺序与列表一致。
数据处理操作——流的数据处理功能支持类似于数据库的操作,以及函数式编程语言中 的常用操作,如filter、map、reduce、find、match、sort等。流操作可以顺序执 行,也可并行执行。 此外,流操作有两个重要的特点。
流水线——很多流操作本身会返回一个流,这样多个操作就可以链接起来,形成一个大 的流水线。这让我们下一章中的一些优化成为可能,如延迟和短路。流水线的操作可以 看作对数据源进行数据库式查询。
内部迭代——与使用迭代器显式迭代的集合不同,流的迭代操作是在背后进行的。
来一段能体现上面概念的代码
算了直接看Java8实战吧,里面的内容都是重点。