什么是Stream流

Stream流的概念

Stream是Java 8引入的API,用于以声明式方式处理集合数据(如过滤、映射、排序等)。它允许高效、并行化的操作,无需显式编写循环代码。Stream不存储数据,而是通过操作管道(如filter、map)对数据源(集合、数组等)进行计算。

Stream流的特点

  • 惰性求值:中间操作(如filter)不会立即执行,只有终端操作(如collect)触发时才会处理数据。
  • 无存储:Stream本身不存储数据,仅代表数据源的视图。
  • 函数式风格:支持链式调用,代码更简洁。
  • 可并行化 :通过parallel()方法轻松实现并行处理。

常用操作示例

创建Stream
java 复制代码
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream(); // 从集合创建
Stream<Integer> nums = Stream.of(1, 2, 3); // 直接生成
中间操作
java 复制代码
stream.filter(s -> s.startsWith("a")) // 过滤
      .map(String::toUpperCase)       // 映射
      .sorted();                      // 排序
终端操作
java 复制代码
long count = stream.count(); // 计数
List<String> result = stream.collect(Collectors.toList()); // 收集为List
stream.forEach(System.out::println); // 遍历

并行流

通过parallelStream()parallel()方法启用并行处理:

java 复制代码
list.parallelStream().forEach(System.out::println); // 并行处理

注意事项

  • Stream只能被消费一次,重复使用会抛出IllegalStateException
  • 并行流需注意线程安全问题,避免共享可变状态。
相关推荐
allanGold8 小时前
【virtualbox】【windows】已有虚拟机存储容量调整方法
windows·virtualbox
小宇的天下9 小时前
Calibre eqDRC(方程化 DRC)核心技术解析与实战指南(14-1)
数据库·windows·microsoft
YIN_尹10 小时前
【C++11】lambda表达式(匿名函数)
java·c++·windows
love530love12 小时前
【探讨】“父级/基环境损坏,子环境全部失效”,如何避免 .venv 受父级 Python 损坏影响?
java·开发语言·人工智能·windows·python·编程·ai编程
企鹅侠客12 小时前
第06章—实战应用篇:List命令详解与实战(上)
数据结构·windows·redis·list
Bruce_Liuxiaowei13 小时前
(2025最后一篇博客)Metasploit框架攻击Windows实例:三种渗透路径
网络·windows·网络安全·网络攻击模型
石像鬼₧魂石15 小时前
Cobalt Strike(简称 CS)专业的红队安全测试工具
linux·windows·安全·ubuntu
ONE_SIX_MIX15 小时前
debian 13 使用 nvidia 官方 apt repo 仓库,获得最新显卡驱动
运维·windows·debian
qq_3176203115 小时前
002:windows命令速查手册
windows·powershell·cmd
素素.陈16 小时前
调用大模型解析图片中的文字
linux·windows·microsoft