Java一维数组遍历有传统for、增强for和Stream API三种方式,各适用于不同场景;转List时Arrays.asList()返回固定大小列表且不支持基本类型直接转换,需用Stream或手动封装;集合转数组推荐toArray(new T[0])。

Java 中一维数组的遍历方式多样,而将其转为集合(如 List)时需注意类型、可变性与性能差异。
常用的一维数组遍历方式
根据需求选择合适的方式,兼顾可读性与功能扩展性:
- 传统 for 循环:适合需要索引或进行下标相关操作的场景,例如修改元素、比较相邻值。
- 增强 for 循环(for-each):代码简洁,适用于只读遍历;但无法直接获取当前索引,也不能在遍历时修改数组内容。
-
Stream API(Java 8+):支持函数式风格,便于链式处理(如过滤、映射、归约),但对基本类型数组需额外包装(如
Arrays.stream(int[])返回的是IntStream,需用boxed()转为Stream<integer></integer>)。
数组转 List 的关键细节
使用 Arrays.asList() 是最常见做法,但有几点必须注意:
- 返回的
List是固定大小的——底层仍指向原数组,不支持add()、remove()等结构性修改,否则抛UnsupportedOperationException。 - 对于基本类型数组(如
int[]),Arrays.asList(arr)会将整个数组视为单个元素,结果是List<int></int>,而非预期的List<integer></integer>。应先转为包装类型数组,或用 Stream 处理。 - 若需可修改的
ArrayList,应包装一层:new ArrayList(Arrays.asList(...))。
基本类型数组的集合转换技巧
以 int[] 为例,正确转为 List<integer></integer> 的常用写法:
立即学习“Java免费学习笔记(深入)”;
- 用 Stream:
Arrays.stream(arr).boxed().collect(Collectors.toList()) - 手动循环添加(适合小数组或兼容低版本 Java):
List<integer> list = new ArrayList(); for (int i : arr) list.add(i);</integer> - 避免误用:
Arrays.asList(arr)对int[]无效,它不会自动拆箱。
集合转回数组的注意事项
从 List 转回数组时,推荐使用带泛型参数的 toArray(T[]) 方法:
- 写法:
String[] arr = list.toArray(new String[0]);—— 传入空数组更安全,JVM 自动推断类型并分配合适大小。 - 避免使用无参
toArray(),它返回Object[],强转容易出错。 - 若已知长度且希望复用数组,可传入指定长度的数组,但需确保类型匹配且容量足够。


















