重学Java 8新特性 | 第7讲——强大的Stream API

重学Java 8新特性 | 第7讲——强大的Stream API,第1张

重学Java 8新特性 | 第7讲——强大的Stream API 闲扯一番

时间过得可真快啊,没想到今天就是除夕了,既然是除夕,那就该说点祝福的话语,喜庆喜庆,在这里我就祝大家在新的一年乐乐呵呵地把钱挣进口袋,身体健健康康,生活顺顺当当!

总想着在这最后一天应该做点什么有意义的事,于是就想干脆何不写一篇文章玩玩,于是这篇文章就在这样的背景下写出来了。另外,就是有读者私信催促我要继续更新文章,说到这,我不禁惭愧不已,离上一篇文章的更新已经差不多有27天了,快接近一个月了,怎能不教人汗颜,对此大家催促的对,我都不想说我自己了,只有寄希望于在春节给大家带来更多的文章来弥补了。

我这里还得说一点,有许多读者希望我更新「Spring Boot 2从入门到入坟」这一专栏中的文章,放心,我是一定会更完的,给大家吃一个定心丸,不会鸽哟!可能这篇更完之后,就更新专栏里面的文章,希望大家踊跃订阅,哈哈哈

回到主题,这篇文章的中心主旨是什么呢?相信大家从文章标题就能看出来,在这篇文章中我会给大家详细讲述一下强大的Stream API,这也是Java 8中两大最为重要的改变之一。

Stream是什么?

Java 8中有两大最为重要的改变。第一个是Lambda表达式;另外一个则是Stream API(位于java.util.stream.*包下)。

Stream是Java 8中处理集合的关键抽象概念,它可以指定你希望对集合进行的 *** 作,可以执行非常复杂的查找、过滤和映射数据等 *** 作。使用Stream API对集合数据进行 *** 作,就类似于使用SQL执行的数据库查询,当然,也可以使用Stream API来并行执行 *** 作。

简而言之,Stream API提供了一种高效且易于使用的处理数据的方式。

那么Stream(翻译过来就是流)到底是什么呢?Stream(即流)是数据渠道,用于 *** 作数据源(集合、数组等)所生成的元素序列。大家一定要记住这句话,即集合讲的是数据,流讲的是计算!此外,我们还应尤其注意以下几点:

    Stream自己不会存储元素;Stream不会改变源对象,相反,它们会返回一个持有结果的新Stream;Stream *** 作是延迟执行的,这意味着它们会等到需要结果的时候才执行。

其实,只要是流,那么它们的概念几乎都是类似的,都是用于 *** 作数据的,但是咱们现在遇到的这个流和IO流还是不一样的,这点大家一定要搞清楚。大家现在清楚了流是用来 *** 作数据的,既然是来 *** 作数据的,那是不是首先都得有一个数据源啊,大家觉得数据源是什么比较合适呢?根据上面的描述,你应该知道数据源既可以是集合,也可以是数组。说白了,我们现在可以对集合或者数组中的数据进行一些 *** 作了。

那么能做一些什么 *** 作呢?我给大家来娓娓道来吧!首先,流对数据源中的数据进行 *** 作的时候,是不是说白了就是一个数据的传输啊!既然想完成数据传输,那么是不是得创建一个用于传输数据的管道啊!大家要注意,现在咱们遇到的这个流不一样的地方就是它在数据传输的过程中,可以做一系列流水线式的中间 *** 作,比如过滤、筛选、切片等等。

做完这些中间 *** 作以后,大家要切记的是原来的数据源并不会发生任何改变,取而代之的是,它会产生一个新流。如果要用一个图来形象地描述Stream(即流),那么可能会是下面这样子的。

这就有点类似于文件的复制,把源文件复制成另外一个文件时,源文件是不是不能变啊!

Stream使用的三个步骤

Stream使用的三个步骤如下:

    创建Stream:一个数据源(例如集合、数组),获取一个流。说白了,就是首先得把数据源转换成流。调用Stream的中间 *** 作:一个中间 *** 作链,对数据源的数据进行处理,有过滤、筛选以及切片等 *** 作。终止 *** 作(或者终端 *** 作):一旦执行终止 *** 作,就执行中间 *** 作链,并产生结果,后面的就不会再被使用了。

如果要用一个图来形象地描述Stream *** 作的三个步骤,那么可能会是下面这样子的。

不知大家能看得懂嘛?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5715623.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存