Arrays.stream(int[])直接返回IntStream而非Stream,避免装箱开销,支持sum等原生操作;需转Stream时须调用boxed();支持范围截取及long[]、double[]等同理。

直接调用 Arrays.stream() 方法即可将一维 int[] 转为顺序流(IntStream),不是 Stream<integer></integer>。
使用 Arrays.stream(int[]) 获取 IntStream
对于基本类型数组(如 int[]),Arrays.stream() 会返回对应的基本类型流(IntStream),这是最高效、最常用的方式:
- 无需手动装箱,避免性能开销和对象创建
- 支持
map、filter、sum、average等原生整数操作
示例:
int[] arr = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(arr);
int sum = stream.sum(); // 结果:15
注意:不要误用泛型重载方法
Arrays.stream() 有多个重载版本。若传入 int[] 却期望得到 Stream<integer></integer>,不能直接强转或忽略类型——必须显式装箱:
立即学习“Java免费学习笔记(深入)”;
- ❌ 错误写法:
Stream<integer> s = Arrays.stream(arr);</integer>(编译不通过) - ✅ 正确装箱:
Stream<integer> s = Arrays.stream(arr).boxed();</integer>
boxed() 将 IntStream 转为 Stream<integer></integer>,适用于需要泛型集合操作或与引用类型流交互的场景。
可选:指定范围生成子流
支持截取数组片段生成流,语法为 Arrays.stream(array, fromIndex, toIndex)(右边界不包含):
int[] arr = {10, 20, 30, 40, 50};
IntStream sub = Arrays.stream(arr, 1, 4); // [20, 30, 40]
System.out.println(sub.sum()); // 输出:90
补充:其他基本类型数组同理
long[] → LongStream,double[] → DoubleStream,均使用相同语法:
Arrays.stream(longArray)Arrays.stream(doubleArray)
它们都返回对应的基本类型流,具备专属聚合方法(如 LongStream.max()、DoubleStream.average())。


















