带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(1)https://developer.aliyun.com/article/1339662
flatMap
跟map的区别是可以将一个对象转化成多个对象并以流的方式返回,适合用于集合嵌套场景下的扁平化处理。概念较为拗口,以下用ide截图演示。可以看到特定场景下flatmap相对map有先天优势。
注意事项
书写顺序影响性能
stream实际使用中,filter和map最为常见。这两个操作都是逐个元素执行并逐个向下游操作传递,我们称之为“垂直操作”(补充:sorted是“水平操作”,即会截断后续运算直至自己将流中所有元素操作完成)。其中filter较为特殊,被其拦截后不会继续向下游传递。基于此原理,尽可能将filter前置往往可以大幅提高stream操作性能。如下所示:
一个长度为5的字符集,map-filter-foreach 顺序执行 则会有5次map、5次filter、1次foreach;
filter-map-foreach顺序执行,则会有5次filter、1次map、1次foreach执行。并且很容易推断filter过滤度越高性 能差异就会越明显。
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(3)https://developer.aliyun.com/article/1339660