别再写满屏的 for 循环了!Java 8 Stream 快速上手指南

举报
Brian-Tony 发表于 2026/11/10 09:04:29 2026/11/10
【摘要】 别再写满屏的 for 循环了!Java 8 Stream 快速上手指南 前言在日常开发中,我们经常需要对集合(List、Set)进行遍历、筛选和转换。以前我们习惯写一堆 for 循环,代码冗长且难以维护。今天就来聊聊 Java 8 引入的“神器”—— Stream 流,几行代码就能让你的逻辑变得优雅起来! 什么是 Stream?简单来说,Stream 就是数据流。它允许你以声明式的方式处理...

别再写满屏的 for 循环了!Java 8 Stream 快速上手指南

前言

在日常开发中,我们经常需要对集合(List、Set)进行遍历、筛选和转换。以前我们习惯写一堆 for 循环,代码冗长且难以维护。今天就来聊聊 Java 8 引入的“神器”—— Stream 流,几行代码就能让你的逻辑变得优雅起来!

什么是 Stream?

简单来说,Stream 就是数据流。它允许你以声明式的方式处理数据集合。你可以把它想象成一条工厂流水线,数据从一头进去,经过筛选、加工,最后从另一头出来变成你想要的结果。

实战演练

假设我们有一个用户列表,我们需要筛选出年龄大于 20 岁的用户,并提取他们的名字。

传统写法(for 循环):

List<String> names = new ArrayList<>();
for (User user : users) {
    if (user.getAge() > 20) {
        names.add(user.getName());
    }
}

Stream 写法:

List<String> names = users.stream()
    .filter(user -> user.getAge() > 20)  // 筛选
    .map(User::getName)                  // 转换
    .collect(Collectors.toList());       // 收集

是不是瞬间清爽了?代码的可读性大大提升!

常用操作速查

  • filter:过滤,比如筛选出符合条件的数据。
  • map:转换,比如把对象转换成某个属性,或者把字符串转大写。
  • sorted:排序,支持自然排序和自定义排序。
  • limit:截断,只取前 N 个数据。
  • collect:收集,将流转换成 List、Set 或 Map。

️ 避坑指南

  1. Stream 只能消费一次:流一旦被关闭(terminal operation 执行后),就不能再次使用,否则会报错。
  2. 不要在 Stream 中修改外部变量:Stream 设计初衷是无状态的,强行修改外部变量容易引发线程安全问题。

总结

Stream 并不是为了完全替代 for 循环,但在处理集合数据转换时,它绝对是提升代码逼格和效率的利器。还没用起来的兄弟,赶紧在你的下一个需求里试试吧!


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。