IntStream.of() 是 Java 8 提供的便捷方法,可直接将多个 int 变量或字面量转为 IntStream,支持混合使用、返回原始类型或 OptionalInt,空流 sum 为 0,max/min/average 需 orElse 安全解包,适用于零散变量场景。

IntStream.of() 是 Java 8 引入的便捷方法,能直接把几个独立的 int 变量(或字面量)转成一个 IntStream,省去数组或集合中转步骤,特别适合做快速聚合计算。
直接传入多个 int 变量或字面量
只要变量类型是 int(或可自动拆箱为 int 的 Integer),就能直接传给 IntStream.of():
- 支持基本类型:如
IntStream.of(a, b, c, 10, -5) - 支持混合字面量与变量:
int x = 3; int y = 7; IntStream.of(x, y, 1, 2, 3) - 不支持
long、double等其他数值类型——会编译报错;需先显式转换或改用对应流(如LongStream)
配合终端操作完成常见聚合
生成流后,可链式调用 sum()、max()、min()、average() 等,结果为原始类型或 OptionalInt:
int total = IntStream.of(a, b, c).sum();int maxVal = IntStream.of(x, y, z).max().orElse(Integer.MIN_VALUE);double avg = IntStream.of(1, 2, 3, 4).average().orElse(0.0);
注意空流和边界情况
即使只传一个值或零个值,也能正常工作,但行为略有不同:
-
IntStream.of(42)→ 单元素流,sum()返回 42,max()返回OptionalInt.of(42) -
IntStream.of()→ 空流,sum()返回 0(定义行为),但max()/min()/average()返回空OptionalInt,需用orElse安全解包
替代方案对比:什么时候不该用 of()?
如果变量本身存在数组或集合中,优先用 Arrays.stream(ints) 或 list.stream().mapToInt(...),更自然高效;of() 的核心价值在于“零散变量→流”的一步到位,避免临时创建数组(如 new int[]{a,b,c})。


















