性能优化——Stream如何提高遍历集合效率?

什么是 Stream?


现在很多大数据量系统中都存在分表分库的情况。


例如,电商系统中的订单表,常常使用用户 ID 的 Hash 值来实现分表分库,这样是为了减
少单个表的数据量,优化用户查询订单的速度。


但在后台管理员审核订单时,他们需要将各个数据源的数据查询到应用层之后进行合并操
作。


例如,当我们需要查询出过滤条件下的所有订单,并按照订单的某个条件进行排序,单个数
据源查询出来的数据是可以按照某个条件进行排序的,但多个数据源查询出来已经排序好的
数据,并不代表合并后是正确的排序,所以我们需要在应用层对合并数据集合重新进行排
序。


在 Java8 之前,我们通常是通过 for 循环或者 Iterator 迭代来重新排序合并数据,又或者
通过重新定义 Collections.sorts 的 Comparator 方法来实现,这两种方式对于大数据量系
统来说,效率并不是很理想。


Java8 中添加了一个新的接口类 Stream,他和我们之前接触的字节流概念不太一样,
Java8 集合中的 Stream 相当于高级版的 Iterator,他可以通过 Lambda 表达式对集合进
行各种非常便利、高效的聚合操作(Aggregate Operation),或者大批量数据操作 (Bulk
Data Operation)。


Stream 的聚合操作与数据库 SQL 的聚合操作 sorted、filter、map 等类似。我们在应用
层就可以高效地实现类似数据库 SQL 的聚合操作了,而在数据操作方面,Stream 不仅可
以通过串行的方式实现数据操作,还可以通过并行的方式处理大批量数据,提高数据的处理
效率。


接下来我们就用一个简单的例子来体验下 Stream 的简洁与强大。


这个 De

猜你喜欢

转载自blog.csdn.net/qq_36589864/article/details/108009628