java stream可通过arrays.stream()和collection.stream()直接创建,引用类型数组直接调用,基本类型数组返回原始类型stream,需boxed()转包装类stream;集合直接调用stream()方法,并行用parallelstream();stream.of()适合少量元素;注意空安全、链式操作及避免低效写法。

Java 中 Stream 流可以直接从数组或集合创建,无需额外包装或循环,核心是用 Arrays.stream() 和 Collection.stream() 两种方式,简洁高效。
从数组创建 Stream
基本类型数组和引用类型数组创建方式不同,需注意区分:
- 引用类型数组(如
String[]、Integer[])直接调用Arrays.stream(array) - 基本类型数组(如
int[]、double[])也用Arrays.stream(array),但返回的是对应原始类型 Stream(IntStream、DoubleStream),不是Stream<integer></integer> - 若需将基本类型数组转为包装类 Stream(如
int[] → Stream<integer></integer>),可用Arrays.stream(arr).boxed()
从集合创建 Stream
所有实现了 Collection 接口的类型(List、Set、Queue 等)都自带 stream() 方法:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
list.stream()返回Stream<e></e> - 如需并行处理,可调用
list.parallelStream() -
Stream.of(...)适合少量元素快速构建,例如Stream.of("a", "b", "c"),本质是先构造成数组再转 Stream
常见初始化技巧
实际开发中常结合初始化与中间操作,提升表达力:
- 空安全:对可能为
null的集合,建议先判空再调用stream(),或封装工具方法 - 链式初始化:可直接在创建后接
filter、map等,例如Arrays.asList(1,2,3).stream().filter(x -> x > 1).collect(Collectors.toList()) - 避免重复创建:Stream 不可复用,每次需要新流就得重新调用
stream()或Arrays.stream()
不推荐的写法
有些方式看似可行,但效率低或易出错:
- 用
Stream.iterate()或Stream.generate()模拟数组内容——适合无限流或动态生成,不适合已有数据 - 把数组先转
List再调stream()——多一次对象创建,没必要 - 对基本类型数组误用
Stream.of(array),结果是Stream<int></int>而非IntStream
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










