java - 我什么时候应该使用 Java-8 Streams?

标签 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       }
}

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

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

如有错误请指正。我正在寻找更多这样的案例......

最佳答案

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

关于java - 我什么时候应该使用 Java-8 Streams?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36275298/

相关文章:

Java 泛型 : required capture#67 of?

java - 动态jasper报告标题图片

python - 使用 lambda 函数将 double for 循环转换为列表理解

c++ - 为什么不能捕获我的 C++ lambda 函数?

java - 用 Java-8 Streams 替换 'for' 循环中的 if-else

java - 打印多个 JPanel

java - Picasso 正在加载 URL 但未显示图片

linq - 评估 lambda 表达式

generics - 通用静态方法调用无法在 Java 8 中编译

Java Lambda 引用封闭对象 : Replace with Private Static Class?