带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(2)

简介: 带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(2)

带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(1)https://developer.aliyun.com/article/1339662

flatMap

 

跟map的区别是可以将一个对象转化成多个对象并以流的方式返回,适合用于集合嵌套场景下的扁平化处理。概念较为拗口,以下用ide截图演示。可以看到特定场景下flatmap相对map有先天优势。

 

image.png

 

 

注意事项

书写顺序影响性能

 


stream实际使用中,filter和map最为常见。这两个操作都是逐个元素执行并逐个向下游操作传递,我们称之为“垂直操作”(补充:sorted是“水平操作”,即会截断后续运算直至自己将流中所有元素操作完成)。其中filter较为特殊,被其拦截后不会继续向下游传递。基于此原理,尽可能将filter前置往往可以大幅提高stream操作性能。如下所示:


 image.png

 

 

一个长度为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

相关文章
|
9月前
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(3)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(3)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(3)
|
9月前
|
IDE 编译器 API
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(1)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(1)
|
9月前
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(4)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(4)
|
9月前
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(4)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(4)
|
9月前
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(5)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(5)
|
9月前
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(6)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(6)
|
9月前
|
算法
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(3)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(3)
|
9月前
|
SQL 缓存 JSON
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(1)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(1)
120 1
|
9月前
|
网络协议
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(2)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(2)
101 1
|
9月前
|
算法 API
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(5)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(5)