Tea*_* NG 22 java collections java-8 java-stream
我正在学习Java 8中的Streams.我对这个概念感到困惑:
集合是内存中的数据结构,它保存数据结构当前具有的所有值 - 集合中的每个元素必须先计算才能添加到集合中.相反,流是概念上固定的数据结构,其中元素是按需计算的.
我不明白.Collection如何才能保存在添加到集合之前必须已计算的值?而且,Stream与固定数据结构的比较是什么意思?
And*_*eas 51
你没有提供你的报价来源,所以让我引用你的javadoc:
Streams在几个方面与集合不同:
- 没有存储.流不是存储元素的数据结构; 相反,它通过计算操作管道传递来自诸如数据结构,数组,生成器函数或I/O通道的源的元素.
- 功能性.对流的操作会产生结果,但不会修改其来源.例如,过滤
Stream从集合中获取的内容会生成一个Stream没有过滤元素的新元素,而不是从源集合中删除元素.- 寻求懒惰.许多流操作(例如过滤,映射或重复删除)可以懒惰地实现,从而暴露出优化的机会.例如,"找到
String具有三个连续元音的第一个"不需要检查所有输入字符串.流操作分为中间(生成Stream)操作和终端(产生价值或副作用)操作.中间操作总是很懒惰.- 可能是无限的.虽然集合的大小有限,但流不需要.短路操作,例如
limit(n)或findFirst()可以允许无限流上的计算在有限时间内完成.- 消耗品.流的元素仅在流的生命期间访问过一次.像
Iteratora 一样,必须生成一个新流来重新访问源的相同元素.
相反,a Collection是对象(元素)的容器.除非先前已将对象添加到集合中,否则无法从集合中获取(检索)对象.
| 归档时间: |
|
| 查看次数: |
16417 次 |
| 最近记录: |