20191121-Java8 Action 第四章:引入流

什么是流

流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。可以把它看成遍历数据集的高级迭代器
流可以透明的并行处理。

流简介

流的简短定义:从支持数据处理操作的源生成的元素序列

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

流与集合

集合与流之间的差异就在于什么时􏱬进行计算。
集合是一个内存中的数据结构,它包含数据结构中目前所有的值——集合中的每个元素都得先算出来才能添加到集合中。(你可以往集合里加东西或者􏱭东西,但是不管什么时候,集合中的每个元素都是放在内存里的,元素都得先算出来才能成为集合的一部分。)
流则是在概念上􏱮定的数据结构(你不能添加或􏱭除元素),其元素则是􏱯需计 算的。

流只能遍历一次。遍历完之后,这个流已经被消费掉了,可以从原始数据源那里再获得一个新的流来重新遍历一遍,就像迭代器一样。
流:内部迭代
Java8 Action

流的操作

流的操作可以分为两大类

  • 中间操作:诸如filter或sorted等中间操作会返回另一个流。这让多个操作可以连接起来形成一个查询。重要的是,除非流水线上触发一个终端操作,否则中间操作不会执行任何处理。
  • 终端操作:终端操作会从流的流水线生成结果。其结果是任何不是流的值,比如List、Integer,甚至void。
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值