stream.of()是创建流的直接方式,支持可变参数、null元素、空流及单元素流,但与arrays.stream()在处理数组时行为不同:前者将数组视为单个元素,后者展开数组。

Java 中通过 Stream.of() 创建流是最直接、常用的方式之一,适用于已知少量固定元素的场景。
基本用法:传入单个或多个元素
Stream.of() 是一个可变参数方法(T... values),支持传入任意数量的同类型元素,自动推断泛型类型:
Stream<string> stream1 = Stream.of("a", "b", "c");</string>Stream<integer> stream2 = Stream.of(1, 2, 3, 4);</integer>-
Stream<object> stream3 = Stream.of("hello", 42, true);</object>(此时泛型为Object)
注意 null 元素的处理
Stream.of(null) 是合法的,会创建包含一个 null 元素的流;但 Stream.of((String) null) 也有效,类型仍为 Stream<string></string>。需注意后续操作(如 map 或 filter)是否能安全处理 null。
与 Arrays.stream() 的区别
当已有数组时,二者容易混淆:
-
Stream.of(new String[]{"a","b"})→ 创建一个含 1 个元素(即该字符串数组)的Stream<string></string>; -
Arrays.stream(new String[]{"a","b"})→ 创建一个含 2 个元素("a"、"b")的Stream<string></string>。
若想用 Stream.of() 展开数组,需显式解包:Stream.of("a", "b"),或改用 Arrays.stream(array)。
创建空流或单元素流
也支持边界情况:
- 空流:
Stream.of()(无参调用)→ 返回空流; - 单元素流:
Stream.of("only")→ 简洁且类型明确。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











