Java中将数组转为List最常用的是Arrays.asList(),但其返回固定长度List,不支持增删;需可变List时应使用new ArrayList(Arrays.asList());Stream API适合函数式链式处理;基本类型数组需先装箱。
Java中将数组转为List最常用、最直接的方法是使用 Arrays.asList(),但它有重要限制:返回的是固定长度的List(底层是Arrays的内部类),不支持增删操作。真正需要可变List时,得再包装一层 new ArrayList()。
适用于不需要增删元素、仅遍历或修改已有元素值的场景。
String[] arr = {"a", "b", "c"};
List list = Arrays.asList(arr); // ✅ 可以
// list.add("d"); // ❌ 抛异常
这是实际开发中最推荐的方式,能安全地增删改查。
Integer[] nums = {1, 2, 3};
List list = new ArrayList<>(Arrays.asList(nums));
list.add(4); // ✅ 正常执行
当需要在转换同时做过滤、映射等操作时更简洁。
String[] arr = {"hello", "w
orld", "java"};
List list = Arrays.stream(arr)
.filter(s -> s.length() > 4)
.collect(Collectors.toList());
不能直接用 Arrays.asList(int[]),因为int[]本身是对象,会被当作单个元素。正确做法是先转成包装类型数组,或用Stream装箱:
基本上就这些。选哪种取决于你是否需要修改List、是否用到函数式操作,以及Java版本。日常用第二种最稳妥。