提示四十五:谨慎使用stream。
默认情况下,流管道会按顺序运行。 要使管道并行执行,只需要在管道中的任何流上调用 parallel() 方法,但是通常不建议这么做。
-
Steam使程序变得简洁清晰,但是过度使用流会使程序难于阅读和维护。
- 仔细命名lambda 参数。
- 使用辅助方法,能显著提高流管道的可读性。
尽量避免使用chars()方法,java.lang.CharSequence#chars返回值是一个Int的stream,比较另人难以想到。
重构现有代码以使用流,并仅在有意义的情况下在新代码中使用它们。
-
stream流相比传统循环的劣势:
- lambda 中,只能读取最终或有效的最终变量,并且无法修改任何局部变量。
- 不能从封闭方法返回,中断或继续封闭循环,或抛出声明此方法的任何已检查异常。
-
stream流相比传统循环的优势:
- 统一处理元素序列
- 过滤
- 联合元素的运算(加, 连接, 算最小值等)
- 将元素序列累积到集合中, 或分组
- 查询
我平时使用过程中感觉stream流最大的优势就是优雅。所以除了特别简单或者或者复杂的循环,我一般都会喜欢先用stream来试试。当然有时候会遇到困难,那就再改成传统的for循环。我感觉针对stream流的使用,最需要注意的就是可读性的维护。为此多折行或者多抽几个方法都是物有所值的。