上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2 流(Stream)
因为本书后面会多次使用流的概念,所以在此专门介绍一下。在我们平时的编程开发中,往往练就了一番使用Collections框架提供的API熟练、高效地处理数据的能力,对于较复杂的数据,我们往往会用循环来检查。为此,Collections API针对循环遍历的上手难度和方便性做的优化最多,但此优化只适用于从上到下依次执行,并不能高效地利用我们的多核CPU,而通过流则可以很好地解决这个问题。
其实对于流,完全不需要将其想得多么高大上,其就像一条河中的水,有源头,有处理过程,同样有最好的消费归宿。“滚滚长江东逝水”这句歌词恰好道出了流的一次性特性。
通过上面的简单场景,可以总结流的特性如下。
● 流中的元素是有顺序的。
● 流需要一个数据源。流可以将集合、数组、文件或者其他的I/O资源作为其输入的数据源。
● 丰富而流畅的处理操作API。流API提供了与其他函数式语言相同的AP(I具体API的名字都一样,基本没有什么学习难度),这方便了统一操作,如filter、map、skip、limit等操作。
● 包含一些隐式操作。比如,针对元素迭代,我们无须手动指定,这是默认实现的。另外,在最终具体消费的时候,才会执行流的整个处理过程。