什么是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
  • 并行流需注意线程安全问题,避免共享可变状态。
相关推荐
qq_3692243313 天前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
阿米亚波13 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
caimouse13 天前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows
初圣魔门首席弟子13 天前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
CHENG-JustDoIt14 天前
AI工具 | 爆火开源项目Odysseus AI 工作台:从项目介绍、部署情况及其使用等多方位分析指南(含详细步骤)
大数据·人工智能·windows·python·ai·开源·github
kingbal14 天前
Windows:flutter环境搭建
windows·flutter
未若君雅裁14 天前
Python 数据容器详解,list、tuple、str、set、dict 到底怎么选
windows·python·list
CodeKwang14 天前
Windows 环境 OCCT 8.0 编译构建及与 Qt6 项目集成
windows·qt·opencascade
我是伪码农14 天前
小兔鲜1-25
linux·服务器·windows
vx-Biye_Design14 天前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis