jdk1.8 Stream 特性总结
2024-09-05 06:32:44
- 不是数据结构
- 它没有内部存储,它只是用操作管道从 source(数据结构、数组、generator function、IO channel)抓取数据。
- 它也绝不修改自己所封装的底层数据结构的数据。例如 Stream 的 filter 操作会产生一个不包含被过滤元素的新 Stream,而不是从 source 删除那些元素。
- 所有 Stream 的操作必须以 lambda 表达式为参数
- 不支持索引访问
- 你可以请求第一个元素,但无法请求第二个,第三个,或最后一个。不过请参阅下一项。
- 很容易生成数组或者 List
- 惰性化
- 很多 Stream 操作是向后延迟的,一直到它弄清楚了最后需要多少数据才会开始。
- Intermediate 操作永远是惰性化的。
- 并行能力
- 当一个 Stream 是并行化的,就不需要再写多线程代码,所有对它的操作会自动并行进行的。
- 可以是无限的
- 集合有固定大小,Stream 则不必。limit(n) 和 findFirst() 这类的 short-circuiting 操作可以对无限的 Stream 进行运算并很快完成。
最新文章
- SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)
- 剑指Offer面试题:5.重建二叉树
- Delphi文件操作函数
- java selenium (十) 操作浏览器
- Open source packages on self-driving car
- (续篇3):飞测独家のJmeter秘籍,限量发放
- MYSQL注入天书之服务器(两层)架构
- 【linux程序设计4th】第三章1
- Intent.Action
- Jquery 解决 H5 placeholder元素问题
- win7 64位 Xsheel
- 在 WindowMobile 上的模拟LED 显示屏插件(转)
- python 的日志logging模块学习
- Winform &; Devexpress Chart使用入门
- C#图解教程 第十章 结构
- 理解 Linux 中 `ls` 的输出
- AOP代理对象生成
- Python全栈之路----常用模块----subprocess模块
- jq ajax数据交互
- android 使用Canvas画箭头