首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8集合和流/forEach

Java 8集合和流/forEach
EN

Stack Overflow用户
提问于 2016-10-05 18:25:27
回答 2查看 1.1K关注 0票数 3

在使用集合时,是否有任何理由在forEach调用之前专门插入流/并行流?

示例:

代码语言:javascript
复制
Collection<Object> foo;
foo.forEach(); // Goes through every item in foo
foo.stream().forEach(); // Does stream make a difference here
foo.parallelStream().forEach(); // Does this make a difference here?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-05 18:32:59

代码语言:javascript
复制
foo.forEach(); // Goes through every item in foo
foo.stream().forEach(); // Does stream make a difference here

除非您需要像map或filter这样的流操作,否则它是无用的。

代码语言:javascript
复制
foo.parallelStream().forEach();

这将为计算机的每个逻辑核心生成一个新线程来计算项。仔细考虑是否使用此功能,在大多数情况下,它只会在长时间运行的操作中得到回报。

的底线:当流可以在没有副作用的情况下使用时,它们就会发光,比如将A类型的集合映射到B类型,而不改变A。循环很可能会改变流之外的数据。

票数 4
EN

Stack Overflow用户

发布于 2016-10-05 18:29:07

它所做的同样的工作,但范式是完全不同的。

流是函数式编程的一部分,它允许您考虑该做什么,而不是如何做。

我知道这听起来很抽象,但很有道理。因此,基本上您关注的是操作,而不是迭代。更别提stream()提供了额外的功能,比如过滤器、地图、减少.

parallelStream将使您能够使用所有内核,这是相当酷的-您将有一个真正的多线程应用程序,而没有任何额外的代码。

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

https://stackoverflow.com/questions/39881207

复制
相关文章

相似问题

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