Java8-

news2024/11/18 19:43:23

https://blog.51cto.com/u_14014612/5677262

Stream到底是什么呢?

是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。
“集合讲的是数据,Stream讲的是计算!”

流的构成

当我们使用一个流的时候,通常包括三个基本步骤:

获取一个数据源(source)→ 数据转换→执行操作获取想要的结果,每次转换原有 Stream 对象不改变,返回一个新的 Stream 对象(可以有多次转换),这就允许对其操作可以像链条一样排列,变成一个管道,如下图所示。

流的操作类型分为两种:

  • Intermediate:一个流可以后面跟随零个或多个 intermediate 操作。其目的主要是打开流,做出某种程度的数据映射/过滤,然后返回一个新的流,交给下一个操作使用。这类操作都是惰性化的(lazy),就是说,仅仅调用到这类方法,并没有真正开始流的遍历。
  • Terminal:一个流只能有一个 terminal 操作,当这个操作执行后,流就被使用“光”了,无法再被操作。所以这必定是流的最后一个操作。Terminal 操作的执行,才会真正开始流的遍历,并且会生成一个结果,或者一个 side effect。

Stream 的特性可以归纳为:

  • 不是数据结构
  • 它没有内部存储,它只是用操作管道从 source(数据结构、数组、generator function、IO channel)抓取数据。
  • 它也绝不修改自己所封装的底层数据结构的数据。例如 Stream 的 filter 操作会产生一个不包含被过滤元素的新 Stream,而不是从 source 删除那些元素。
  • 所有 Stream 的操作必须以 lambda 表达式为参数
    不支持索引访问
  • 你可以请求第一个元素,但无法请求第二个,第三个,或最后一个。不过请参阅下一项。
  • 很容易生成数组或者 List
  • 惰性化
  • 很多 Stream 操作是向后延迟的,一直到它弄清楚了最后需要多少数据才会开始。
  • Intermediate 操作永远是惰性化的。
  • 并行能力 当一个 Stream 是并行化的,就不需要再写多线程代码,所有对它的操作会自动并行进行的。
  • 可以是无限的
  • 集合有固定大小,Stream 则不必。limit(n) 和 findFirst() 这类的 short-circuiting 操作可以对无限的 Stream 进行运算并很快完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/148155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贴片SD卡移植FATFS文件系统

一、前言 手头有一块深圳雷龙的 SDIO 接口的贴片 SD 卡,挂载个文件系统把玩一下。首先介绍一下使用的贴片 SD 卡,以前使用的都是拔插式的 SD 卡,下面这个样子: 拿到的贴片雷龙 SD 卡如下图: 二、贴片 SD 卡介绍 雷龙的…

RAD Studio 11.2 详细图文安装教程 (delphi 11.2)

准备 准备好安装镜像和嘿嘿工具 镜像可以到官网下载,工具百度搜一搜就能找到 系统环境:win11 专业版 开始安装 双击镜像文件,然后将里面的文件复制到一个地方 注意一定要把这两个文件复制出来再运行,否则会嘿嘿失败 右键点击红色…

前有农民歌唱家大衣哥,后有农民女歌手草帽姐,都给山东人增光了

山东自古以来是孔孟之乡礼仪之邦,也诞生了很多的好儿女,农民歌唱家大衣哥就是其中的一位。大衣哥是从《星光大道》走红,也是大山东人的骄傲,他出名十几年不忘本,扎根农村为老乡们做贡献的精神,也感动了无数…

从0到1完成一个Vue后台管理项目(五、登录页,mock,token,axios封装)

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) 从0到1完成一个Vu…

两大js调试工具的安装

首先要确保已经安装nodejs,具体安装步骤可以百度。 node-inspect工具的安装和使用 对于node-inspect工具我们可以全局安装: npm install node-inspect -g由于安装过cnpm,所以几乎在1秒内将node-inspect安装完成。 cnpm的安装方法&#xff…

Multisim14.0仿真应用举例——OCL电路输出功率和效率的研究

安装教程:http://t.csdn.cn/qvvqA一、理论讲解OCL全称: Output Capacitorless,中文名称:无输出电容的功率放大电路。功率放大带电路最重要的技术指标是最大输出功率Pom和效率η 。若输入信号Ui为正弦信号sin(wt),负载上能得到的最大输出电压且…

你是真的“C”——详解C语言实现静态版通讯录

详解C语言实现静态版通讯录😎前言😃通讯录设计的关键思想点分析 🙌通讯录界面(meun)设计 🙌增加信息功能实现代码🙌删除信息功能实现代码🙌查询信息功能实现代码🙌修改信…

【强训】Day04

努力经营当下,直至未来明朗! 文章目录一、选择二、编程1. 计算糖果2. 进制转换答案1. 选择2. 编程普通小孩也要热爱生活! 一、选择 下列与队列结构有关联的是() A 函数的递归调用 B 数组元素的引用 C 多重循环的执行…

【年终总结系列 2022】魔幻、疲惫、收获与成长

时光飞逝,转眼到了2022年的年末了。仿佛昨天还在看冬奥的开幕式,而第一次做核酸又似乎很遥远,生活像是一瞬间恢复了喧嚣,可能是三年之期已到吧。这一年于我们大众而言我愿称之为魔幻的一年,于我自己而言,则…

6.4 工具-RabbitMQ

目录 6.4.1 RabbitMQ概述 6.4.1.1 什么是RabbitMQ 6.4.1.2 Erlang和AMQP 6.4.1.3 RabbitMQ 6.4.1.3.1 RabbitMQ优点 6.4.1.3.2 应用解耦 6.4.1.3.3 异步处理 6.4.1.3.4 流量削峰 6.4.2 RabbitMQ安装 6.4.3 RabbitMQ架构 6.4.3.1 架构图 6.4.3.1.1 术语 6.4.3.1.…

MongoDB入门学习(二)GridFS、GridFS整合SpringBoot

文章目录GridFSGridFS简介GridFS存储原理GridFS整合SpringBoot新增store()查询与下载find()、findOne()删除delete()Demo案例GridFS GridFS简介 GridFS是MongoDB的一个用来存储/获取大型数据(图像、音频、视频等类型的文件)的规范。相当于一个存储文件…

Java中创建不可变集合、Stream流、异常体系、日志框架

创建不可变集合、Stream流、异常体系、日志框架创建不可变集合什么是不可变集合?为什么要创建不可变集合?如何创建不可变集合?不可变集合的特点?Stream流Stream流的概述Stream流的获取Stream流的常用API(中间操作方法&…

Index Tree(树状数组)

1、引入 线段树解决的是 区间查询 和 区间更新 的问题, O(logn)O(logn)O(logn) 复杂度。 人为规定:数组下标从 1 开始。 如果要计算数组某个范围 L 到 R 的累加和,那么可以准备一个前缀和数组 help,得到前缀和数组后&#xff0…

【寒假每日一题】洛谷 P6263 [COCI2014-2015#3] STROJOPIS

题目链接:P6263 [COCI2014-2015#3] STROJOPIS - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 正确的打字正成为文化的重要组成部分。如果你仍然没有使用所有的十根手指来打字,你必须重新学习打字——然后你会打字更快,感觉更舒适…

Web进阶:Day1 字体图标、平面转换、空间转换、动画

Web进阶:Day1 Date: October 3, 2022 Summary: 字体图标、平面转换、空间转换、动画 字体图标 字体图标 字体图标展示的是图标,本质是字体 处理简单的、颜色单一的图片 注:复杂的用CSS精灵,简单的用字体图标 字体图标的优点&…

Verilog语法笔记(夏宇闻第三版)-条件语句

目录 if_else语句: 五点说明: case语句: 真值表: ​例: ​由于使用条件语句不当在设计中生成了原本没想到有的锁存器: if_else语句: if语句是用来判定所给定的条件是否满足,…

(十四)面向对象的三大特征

目录 前言: 一、面向对象三大特征之一:封装 二、面向对象三大特征之二:继承 三、面向对象三大特征之三:多态 前言: 面向对象的三大特征:封装、继承、多态。 一、面向对象三大特征之一:封装 1.概述: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口…

使用Idea编码常用的28种技巧方式

一丶列表: 1丶查看代码历史版本 2丶调整idea的虚拟内存: 3丶idea设置成eclipse的快捷键 4丶设置提示词忽略大小写 5丶关闭代码检查 6丶设置文档注释模板 7丶显示方法分隔符 8丶设置多行tab 9丶快速匹配方法的大括号位置 10丶代码结尾补全 11丶模糊搜索方法 12丶预览…

用 Python selenium爬取股票新闻并存入mysql数据库中带翻页功能demo可下载

用 Python selenium爬取实时股票新闻并存入mysql数据库中1.分析需求2.创建表3.分析需要爬取的网页内容4.python里面selenium进行爬虫操作1.添加包2.连接数据库3.selenium爬虫前配置4.对股票新闻内容爬取并存入mysql中5.翻页功能6.运行程序首先我们先明确我们的主要目标就是要爬…

5、SySeVR复现——Data preprocess(上)

目录 1、环境 2、生成切片对应的hash 3、获取要删除的切片位置信息 4、对切片进行token化 1、环境 从数据预处理开始,操作系统:windows 10 ,软件:pycharm 注:对官方提供的文件,做了一些改动&#xff0c…