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

A.R*_*K.S 4 java lambda java-8 java-stream

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

根据我的理解,用流替换每个循环都没有意义,因为流并不总是比循环更好.以下几个案例我认为是有益的:

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

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

  1. 当我们想要在集合中收集结果时,结果顺序无关紧要,每次迭代都是独立的(无状态).如果计算是CPU密集型的,我们在这里使用并行流,我相信它会更高效.

如果我错了,请纠正我.我正在寻找更多此类案例......

Lou*_*man 15

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