提示四十六:优先使用streams中无副作用函数。
这一章中作者先用一个反面案例说明了stream中的一个坏味道:只使用了foreach伪装成流代码,但本质还是普通的代码,使用流以后反而增加了复杂度,还更难阅读、维护。
接着作者又举例说明了静态导入收集器的所有成员是一种惯例和明智的做法,因为它使流管道更易于阅读。
作者介绍了Collectors API中有39个方法。我又去看了一下,发现除了我平时用的比较多的几个,还是有好几个方法比较陌生,但是我平时已经经常使用stream了,却对他提供的方法还不是特别清楚,那必然会写出一些本来可以更加简单的复杂代码。甚至还容易出现一些不想要的副作用。还记得之前用了toMap方法,却没有处理冲突的键值。但是如果对Collectors 里面的方法有过研究,就很容易想到toMap方法提供了三个重载的方法,就是为了解决相应的冲突,就可以避免这样的错误了。所以如果想要经常使用stream,还是需要抽空多研究源代码。
网友评论