首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java 8中的流和集合有什么区别?

Java 8中的流和集合有什么区别?
EN

Stack Overflow用户
提问于 2016-09-11 03:56:09
回答 2查看 27.3K关注 0票数 36

我正在学习Java 8中的流。我对这个概念感到困惑:

集合是内存中的数据结构,它保存数据结构当前拥有的所有值,在将其添加到集合之前必须计算集合中的每个元素。相反,流是按需计算元素的概念固定的数据结构。

我不明白,集合怎么能只保存在将值添加到集合之前必须计算的值?此外,比较固定数据结构的流意味着什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-11 04:44:44

您没有提供报价的来源,所以让我引用javadoc给您:

流与集合有几种不同之处:

  • ,无存储,.流不是存储元素的数据结构;相反,它通过计算操作的管道从源(如数据结构、数组、生成器函数或I/O通道)传递元素。
  • 函数在本质上是。流上的操作会产生结果,但不会修改其源。例如,过滤从集合中获得的Stream会产生一个新的Stream,而不需要过滤的元素,而不是从源集合中删除元素。
  • Laziness-seeking.许多流操作(例如过滤、映射或重复删除)可以延迟实现,从而为优化提供机会。例如,“查找具有三个连续元音的第一个String”不需要检查所有输入字符串。流操作分为中间(Stream-producing)操作和终端(值产生或副作用产生)操作。中间操作总是懒散的。
  • 可能是无界的。虽然集合具有有限的大小,但是流并不需要。短路操作,如limit(n)findFirst(),可以允许无限流上的计算在有限的时间内完成。
  • 消耗品。在流的生命周期中,只访问一次流的元素。与Iterator类似,必须生成新的流才能重新访问源的相同元素。

相反,Collection是对象(元素)的容器。除非对象先前被添加到集合中,否则无法从集合中获取(检索)对象。

票数 67
EN

Stack Overflow用户

发布于 2022-04-02 16:08:45

一些基本的区别是

但这些都是有限的差别,你必须去探索,去了解更多。收藏就像CD/DVD,流媒体是电影。流可以是无状态的和状态的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39432699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档