上次给大家介绍了Java8新特性之方法引用,大家可以点击回顾下。接下来小乐继续给大家带来Java8新特性之Stream ,流是Java8最重要的内容,小乐准备分上下两部分介绍,今天是上部。

5.1、什么是流?

Java Se中对于流的操作有输入输出IO流,而Java8中引入的Stream 属于Java API中的一个新成员,它允许你以声明性方式处理数据集合,Stream 使用一种类似 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。 注意这里的流操作可以看做是对集合数据的处理。

简单来说,流是一种数据渠道,用于操作数据源(集合、数组)所生产的元素序列。

  • 元素序列 :就像集合一样,流也提供了一个接口,可以访问特定元素类型的一组有序值。
  • 源:流会使用一个提供数据的源,如集合、数组或输入/输出资源。 请注意,从有序集 合生成流时会保留原有的顺序。由列表生成的流,其元素顺序与列表一致
  • 数据处理操作:流的数据处理功能支持类似于数据库的操作,以及函数式编程语言中 的常用操作,如filter、 map、 reduce、 find、 match、 sort等。流操作可以顺序执 行,也可并行执行。
  • 流水线:很多流操作本身会返回一个流,这样多个操作就可以链接起来,形成一个大 的流水线。
  • 内部迭代:与使用迭代器显式迭代的集合不同,流的迭代操作是在背后进行的。

5.2、流操作

整个流操作就是一条流水线,将元素放在流水线上一个个地进行处理。需要注意的是:很多流操作本身就会返回一个流,所以多个操作可以直接连接起来, 如下图这样,操作可以进行链式调用,并且并行流还可以实现数据流并行处理操作。

5.3、流与集合

5.3.1、计算的时机

Stream 和集合的其中一个差异在于什么时候进行计算,集合,它会包含当前数据结构中所有的值,你可以随时增删,但是集合里面的元素毫无疑问地都是已经计算好了的。 流则是按需计算,按照使用者的需要计算数据,你可以想象我们通过搜索引擎进行搜索,搜索出来的条目并不是全部呈现出来的,而且先显示最符合的前 10 条或者前 20 条,只有在点击 “下一页” 的时候,才会再输出新的 10 条。

5.3.2、外部迭代与内部迭代

把集合比作一个工厂的仓库,一开始工厂比较落后,要对货物作什么修改,只能工人亲自走进仓库对货物进行处理,有时候还要将处理后的货物放到一个新的仓库里面。在这个时期,我们需要亲自去做迭代,一个个地找到需要的货物,并进行处理,这叫做外部迭代。

后来工厂发展了起来,配备了流水线作业,只要根据需求设计出相应的流水线,然后工人只要把货物放到流水线上,就可以等着接收成果了,而且流水线还可以根据要求直接把货物输送到相应的仓库。这就叫做内部迭代,流水线已经帮你把迭代给完成了,你只需要说要干什么就可以了(即设计出合理的流水线)。

Java 8 引入 Stream 很大程度是因为,流的内部迭代可以自动选择一种合适你硬件的数据表示和并行实现。

5.4、创建流

在 Java 8 中, 集合接口有两个方法来生成流:

  • stream() − 为集合创建串行流。
  • parallelStream() − 为集合创建并行流。

示例代码如下:

public static void main(String[] args) { /** * 定义集合l1 并为集合创建串行流 */ List l1 = Arrays.asList("周星驰

java8 stream 做累加_Java8新特性之Stream(上)|乐字节相关推荐

  1. java8新特性_Java8新特性之Date API|乐字节

    大家好,我是乐字节的小乐,上篇文章讲述了<Java8新特性之Optional>,接下来,小乐将接着讲述Java8新特性之Date API 2019日历 Java8之Date API Jav ...

  2. java8 stream遍历_Java8新特性:Stream流详解

    1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...

  3. java8 lambda map排序_Java8新特性第3章(Stream API)

    转载请注明出处:https://zhuanlan.zhihu.com/p/20540202 Stream作为Java8的新特性之一,他与Java IO包中的InputStream和OutputStre ...

  4. java stream 有序_Java8新特性之Stream流专题四 并行流

    随着对流API认识的慢慢深入,本章我们要讨论的知识点是流API里面的并行流了. 在开始讨论并行流之前,我先引发一下大家的思考,就你看到这篇文章的时间,你们是不是经常听到,Intel i7 CPU什么8 ...

  5. 【java8新特性】——Stream API详解(二)

    一.简介 java8新添加了一个特性:流Stream.Stream让开发者能够以一种声明的方式处理数据源(集合.数组等),它专注于对数据源进行各种高效的聚合操作(aggregate operation ...

  6. 使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean>

    需求分析: 有两个Long类型的集合 : List<Long> tagsIds; List<Long> attributesIds; 现在需要将这两个Long类型的集合进行组合 ...

  7. Java8新特性:Stream介绍和总结

    Java8新特性:Stream介绍和总结 什么是Stream 流(Stream)是数据渠道,用于操作数据源(集合.数组等)所生成的元素序列. 集合讲的是数据,流讲的是计算 注意: Stream自己不会 ...

  8. JAVA8的新特性之Stream

    JAVA8的新特性之Stream 1.概述: 在jdk1.8中,提供了一个Stream,可以对数据进行过滤 2.好处: 比不断自定义循环,要简单很多 Stream类型数据的获取 1.Collectio ...

  9. java stream byte_乐字节-Java8新特性之Stream流(上)

    上一篇文章,小乐给大家介绍了<Java8新特性之方法引用>,下面接下来小乐将会给大家介绍Java8新特性之Stream,称之为流,本篇文章为上半部分. 1.什么是流? Java Se中对于 ...

最新文章

  1. Java 如何实现二维码?
  2. 计算几个数相加和为16
  3. 我月入过万,送着外卖写着诗
  4. 编译原理习题(含答案)——4-7语法分析——MOOC哈尔滨工业大学陈鄞配套_学习通_慕课堂
  5. 哪些网站在+1s后有神奇的功能
  6. 小心Lombok用法中的坑
  7. HDU-1232 畅通工程
  8. java url类下载_Java根据url下载图片或文件的工具类-Fun言
  9. linux内核的自旋锁spin_lock和互斥锁mutex_lock
  10. JAVA集合系列(6):HashMap
  11. VMware vSphere 8 发布(含下载)
  12. android系统黑点bug,老外实测“小黑点”死机短信:iPhone安卓都中招 解决方法很简单...
  13. 弘辽科技:淘宝评分飘绿四大原因及快速提高评分之解决技巧
  14. Vue----.stop、.prevent、.capture、.self用法以及.stop和.self的区别
  15. 2017滴滴校招 连续最大和(DP)
  16. 互联网寒冬,那些不怕失业的程序员们,都有什么技能?
  17. vue中双击事件选中文本、通过输入框实现双击输入文字
  18. PM应该了解的九大项目管理问题
  19. iOS开发之内购完全笔记(您已购买此 App 内购买项目。此项目将免费恢复。)
  20. Java 描述,数字转换为罗马数字。

热门文章

  1. 杭电oj1003java实现
  2. Java设计模式——装饰者模式
  3. 工厂方法模式(Factory Method)简介
  4. 按键防抖_单片机用一个IO口采集多个按键信号
  5. python批量ping50台服务器_使用python编写批量ping主机脚本
  6. 国内首个 Kubernetes SIG-Cloud-Provider 子项目揭秘 | 云原生生态周报 Vol. 37
  7. 全国计算机一级考试理论部分,计算机一级考试理论试题:第七部分 单选
  8. java ssssss_Java 时间字符串(HH:mm:ss.SSS) 转换成毫秒(milliseconds)
  9. python函数应用_Python 函数及其应用
  10. python自动化测试框架pytest.pdf_Python 自动化测试框架 unittest 和 pytest 对比