java中将数组转stream最常用arrays.stream():对象数组返回stream,基本类型数组返回intstream等;需转引用类型流时用boxed(),截取子区间可用arrays.stream(array, from, to)。

Java 中将普通数组转换为 Stream 流,最常用、最直接的方式是使用 Arrays.stream() 方法。
基本用法:Arrays.stream()
该方法适用于所有类型的数组(基本类型和引用类型),会返回对应的 Stream:
- 对于对象数组(如
String[]、Integer[]),Arrays.stream(arr)返回Stream<t></t> - 对于基本类型数组(如
int[]、double[]),它返回对应的基本类型流(IntStream、DoubleStream等),不是Stream<integer></integer>
示例:
String[] strs = {"a", "b", "c"};
Stream<string> stream1 = Arrays.stream(strs);
int[] nums = {1, 2, 3};
IntStream stream2 = Arrays.stream(nums); // 注意:不是 Stream<integer></integer></string>
如果需要把基本类型数组转成引用类型 Stream
比如想把 int[] 转为 Stream<integer></integer>(便于统一处理或后续调用泛型方法),不能直接用 Arrays.stream(),需先装箱:
- 用
Arrays.stream(arr).boxed()—— 最简洁 - 或用
Stream.of()配合Arrays.asList()(仅适用于对象数组,不适用于基本类型)
示例:
int[] nums = {1, 2, 3};
Stream<integer> boxedStream = Arrays.stream(nums).boxed();
// ✅ 正确:Stream.of 适合对象数组
String[] arr = {"x", "y"};
Stream<string> s = Stream.of(arr);
// ❌ 错误:Stream.of(int[]) 会把整个数组当做一个元素
int[] a = {1,2,3};
Stream<int> wrong = Stream.of(a); // 不是 Stream<integer></integer></int></string></integer>
注意边界:不要混淆 Stream.of() 和 Arrays.stream()
Stream.of() 接收的是**可变参数**,对数组的处理容易出错:
-
Stream.of(new String[]{"a","b"})→ 得到Stream<string></string>(一个元素:整个数组) -
Stream.of("a", "b")→ 得到Stream<string></string>(两个元素) - 所以对象数组推荐用
Arrays.stream();基本类型数组只能用Arrays.stream()
小技巧:从数组某段范围创建 Stream
Arrays.stream(array, fromIndex, toIndex) 支持截取子区间(右开区间,toIndex 不包含):
int[] data = {10, 20, 30, 40, 50};
IntStream sub = Arrays.stream(data, 1, 4); // 20, 30, 40
这对分批处理或跳过头尾数据很实用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











