java8 Stream的实现原理 (从零开始实现一个stream流)
1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式、更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算。 1.2 从零开始实现一个stream流 相信很多人在使用过java8的streamAPI接口之后,都会对其实现原理感到好奇,但往往在看到jdk的stream源码后却被其复杂的抽象、封装给弄糊涂了,而无法很好的理解其背后的原理。究其原因,是因为jdk的stream源码是高度工程化的代码,工程化的代码为了效率和满足各式各样的需求,会将代码实现的极其复杂,不易理解。 在这里,我们将抛开jdk的实现思路, 从零开始实现一个stream流 。 我们的 stream流 同样拥有 惰性求值 , 函数式编程接口 等特性,并 兼容jdk的Collection等数据结构 (但不支持并行计算 orz)。 相信在亲手实现一个stream流的框架之后,大家能更好的理解流计算的原理。 2.stream的优点 在探讨探究stream的实现原理和动手实现之前,我们先要体会stream流计算的独特之处。 举个例子: 有一个List<Person>列表,我们需要获得年龄为70岁的前10个Person的姓名。 过程式的解决方案: 稍加思考,我们很快就写出了一个过程式的解决方案( 伪代码 ):