第45条谨慎使用stream

本章节介绍了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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容