【视频&交流平台】
SpringBoot视频:http://t.cn/R3QepWG
Spring Cloud视频:http://t.cn/R3QeRZc
SpringBoot Shiro视频:http://t.cn/R3QDMbh
SpringBoot交流平台:http://t.cn/R3QDhU0
SpringBoot 2.0 SpringData和JPA视频:
http://t.cn/R1pSojf
说明
(1)JDK版本:1.8.0_162
需求缘起:
Spring Boot 2.0有很多新的特性,但是这些特性是依赖JDK的版本是jdk 8+才能进行使用的,因此我们有必要先了解下Java8的新特性。通过前一篇文章我们了解了方法引用,进一步简化了Lambda表达式的写法,本节的我们要介绍下Stream。
一、什么是Stream?
Stream(流)是一个来自数据源的元素队列并支持聚合操作
(1)元素是特定类型的对象,形成一个队列。Java中的Stream并不会存储元素,而是按需计算。
(2)数据源:流的来源。 可以是集合,数组,I/Ochannel, 产生器generator 等。
(3) 聚合操作 类似SQL语句一样的操作,比如filter, map, reduce, find, match, sorted等。
和以前的Collection操作不同, Stream操作还有两个基础的特征:
(1)Pipelining: 中间操作都会返回流对象本身。这样多个操作可以串联成一个管道, 如同流式风格(fluent style)。 这样做可以对操作进行优化, 比如延迟执行(laziness)和短路( short-circuiting)。
(2)内部迭代: 以前对集合遍历都是通过Iterator或者For-Each的方式, 显式的在集合外部进行迭代, 这叫做外部迭代。 Stream提供了内部迭代的方式, 通过访问者模式(Visitor)实现。
二、为什么要使用Stream
三、流的分类
在 Java 8 中, 集合接口有两个方法来串行流和并行流:
(1)stream()−为集合创建串行流。
(2)parallelStream() − 为集合创建并行流。(parallel:并行)
3.1 stream()生成串行流:
对于一个集合对象,只要调用该对象的实例方法stream()就可以创建一个串行流,如下示例:
有了这个stream就可以调用流的API方法了,这个我们在之后再进行讲解。
3.2 parallelStream()生成并行流:
对于一个集合对象,只要调用该对象的实例方法parallelStream()就可以创建一个并行流,如下示例:
四、流的创建
对于流的创建常用的有3中方式:
(1)使用Stream对象的of()方法进行创建。
(2)Arrays的stream()方法。
(3)集合的stream()方法。
如下示例:
五、其它
5.1Stream说明
对于Stream理解注意点:
(1)Stream 自己不会存储元素。
(2)Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
(3)Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。
5.2什么是聚合操作
对于玩过数据库的小伙伴而言的会很好的理解,比如我们在数据库常用的求和SUM、求平均值AVG、求个数COUNT、最大值最小值MAX/ MIN等,诸如下面的需求:
(1)该学生所有科目的总分;
(2)该班级数学的平均分;
(3)该班级每天的出勤人数;
(4)求该班级数学科目的最高分和最低分;
好了,本篇文章就介绍到这里,下篇文章会使用实例进一步说明Stream的使用。
à悟空学员:http://t.cn/Rg3fKJD
领取专属 10元无门槛券
私享最新 技术干货