跳转至

Stream流

Stream 流是一种用于处理集合数据的抽象概念,它允许我们以一种声明式的方式对数据进行各种操作,如筛选、排序、映射、统计等。它就像是一个数据处理的管道,数据在这个管道中流动,经过一系列的操作后得到我们想要的结果。

类似数据处理流水线。

Stream 流的工作流程(以图书馆为例)

想象你是一家图书馆的管理员,需要找出所有 2023 年出版的科技类书籍,按书名字母顺序排列并统计数量。

传统方法需一本一本的查看书本的出版年限和类别,筛选出符合条件的书,再手动给它们进行排序,最后一个个的计数,效率低且易出错,而 Stream 流可通过以下流程高效完成:

第一步:筛选

在数据处理流水线上设置筛选关卡,仅允许 2023 年出版且属于科技类的书籍通过(Stream流提供了filter方法来实现这个筛选功能)。

第二步:排序

通过方法对筛选后的书籍按书名字母顺序排序,如同流水线上的 "排序工人" 自动按规则排序数据。

第三步:统计

使用方法快速统计最终符合条件的书籍数量,如同流水线上的 "计数器" 自动计算结果。(Stream流的count方法就像一个计数器,它会快速的算出流水线上最终剩下的数据数量)。

Stream 流的常用操作

Stream 流提供多种操作方法,满足不同数据处理需求:

  • 筛选:通过条件过滤数据,如筛选特定年份和类别的书籍。

  • 排序:方法按指定规则排序数据(如书名字母顺序)。

  • map方法:对数据进行映射转换,如将书籍信息映射为书名列表。

  • distinct方法:可以去除重复的数据。

  • limit方法:可以限制数据的数量。

  • 计数:方法统计数据总量。

Stream 流的使用场景

Stream 流应用广泛,常见场景包括:

  • 电商系统:筛选价格在特定范围的商品、然后按销量排序、最后统计出符合条件的商品数量。

  • 社交平台:筛选特定时间段发布的文章、按照点赞数排序、找出热门内容。

遗留问题:Stream 流的性能优化

尽管 Stream 流高效,但处理大规模数据时可能面临性能问题。如何优化 Stream 流的性能将是后续探讨的重点。