在使用集合时,是否有任何理由在forEach调用之前专门插入流/并行流?
示例:
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?谢谢
发布于 2016-10-05 18:32:59
foo.forEach(); // Goes through every item in foo
foo.stream().forEach(); // Does stream make a difference here除非您需要像map或filter这样的流操作,否则它是无用的。
foo.parallelStream().forEach();这将为计算机的每个逻辑核心生成一个新线程来计算项。仔细考虑是否使用此功能,在大多数情况下,它只会在长时间运行的操作中得到回报。
的底线:当流可以在没有副作用的情况下使用时,它们就会发光,比如将A类型的集合映射到B类型,而不改变A。循环很可能会改变流之外的数据。
发布于 2016-10-05 18:29:07
它所做的同样的工作,但范式是完全不同的。
流是函数式编程的一部分,它允许您考虑该做什么,而不是如何做。
我知道这听起来很抽象,但很有道理。因此,基本上您关注的是操作,而不是迭代。更别提stream()提供了额外的功能,比如过滤器、地图、减少.
parallelStream将使您能够使用所有内核,这是相当酷的-您将有一个真正的多线程应用程序,而没有任何额外的代码。
https://stackoverflow.com/questions/39881207
复制相似问题