首页
学习
活动
专区
工具
TVP
发布

Java8新特性:Stream:基础篇

【视频&交流平台】

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180908B0MKHD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券