本章节介绍了stream 特性。stream 也是java8的新特性,可以简化串行或并发的大批量操作。
书中提到,过度使用stream或使用不当会造成可读性,不过可能因为stream 在平时的开发中应用的比较多,我在读书中的stream 方法时,感觉使用了stream 的代码可读性更好一些。个人感觉在命名合理的前提下,stream 可读性还是更好的,代码也更加优雅一些。
使用stream 的注意点。
适合使用stream 的场景:
1.统一转换元素的序列
2.过滤元素的序列
3.利用单个操作(如添加、连接或者计算其最小值)合并元素的顺序
4.将元素的序列放到一个集合中,比如根据某些公共属性进行分组
5.收缩满足某些条件的元素的序列不适合使用stream 的场景:
1.需要修改局部变量。lambda只能读取final变量。
2.需要从外围方法中return 、 break、continue外围循环,或抛出该方法声明要抛出的受检异常。其他注意点:
尽量避免使用Stream处理char值。 因为chars()返回的是int,如果使用stream 处理char, 必须强制转换。
stream 和 迭代 都可以实现功能,个人认为stream 用法更加简洁易懂,链式调用的代码也更加优雅。
不过书中给到双重循环用stream 来实现的例子让我想到,如果只是迭代的话,使用迭代会比stream 稍微快一点。因为省去了一个转换成stream 对象的过程。
如下面这段代码(当然不会真的有人stream().foreach, 只是想说明转成stream 对象时会多花一点时间),编译器都会提示可以直接使用stream。
image.png