我什么时候应该去Java-8 Streams?

时间:2016-03-29 04:13:14

标签: java lambda java-8 java-stream

我最近开始学习Java-8流。我正在寻找一个庞大的代码库,并试图找出在哪里可以使用流来提高性能。

从我的理解,用流替换每个循环没有意义,因为流并不总是优于循环。以下几个案例我认为是有益的:

  1. 只有集合中的某些元素会导致更多计算。
  2. while(iterate over a collection) 
    {  
        if(certain condition is met) {  //do some computation  } 
        else { //do nothing       }
    }
    

    在这里使用流可以避免在这里加载集合中不必要的成员。 (速度更快,内存效率更高)

    1. 当我们想要在集合中收集结果时,结果顺序无关紧要,每次迭代都是独立的(无状态)。如果计算是CPU密集型的,我们在这里使用并行流,我相信它会更高效。
    2. 如果我错了,请纠正我。我正在寻找更多此类案件......

1 个答案:

答案 0 :(得分:15)

回到代码库并手工重写事情可能浪费时间。一般来说,除非您通过非常大的计算使用并行流,否则流不会提供性能优势(有关详细建议,请参阅http://gee.cs.oswego.edu/dl/html/StreamParallelGuidance.html)。大多数情况下,流将具有相同的性能;他们写的时间会更短。