数组转List可用Arrays.asList()(固定大小)、new ArrayList(Arrays.asList())(可变)或Stream API(灵活处理);List转数组推荐使用list.toArray(new T[0])避免强转;注意Arrays.asList()返回的List不可增删且与原数组互相影响,基本类型需通过Stream.boxed()转换。

在 Java 中,数组和 List 之间的转换是常见操作,主要通过 Arrays.asList()、ArrayList 构造方法 和 Stream API 实现。下面分别介绍具体方法。
数组转 List
将数组转换为 List 有多种方式,常用如下:
• 使用 Arrays.asList():适合固定大小的 List这个方法返回的是 Arrays 的内部类 ArrayList,不支持添加或删除元素(不支持 add/remove)。
示例:String[] array = {"a", "b", "c"};
List list = Arrays.asList(array);
• 使用 new ArrayList(Arrays.asList()):创建可变 List如果需要对 List 进行修改,可以将其包装成新的 ArrayList。
立即学习“Java免费学习笔记(深入)”;
示例:String[] array = {"a", "b", "c"};
List list = new ArrayList<>(Arrays.asList(array));
list.add("d"); // 正常执行
• 使用 Stream API(Java 8+):更灵活,适合处理基本类型包装类尤其适用于从数组构造不可变或可变列表,并支持链式操作。
示例:String[] array = {"a", "b", "c"};
List list = Arrays.stream(array).collect(Collectors.toList());
List 转数组
List 转换为数组使用 toArray() 方法,有两种常见用法:
List• 带类型参数的 toArray(T[]):推荐方式,指定目标数组类型list = Arrays.asList("a", "b", "c"); Object[] array = list.toArray();
传入一个相同类型的空数组,JVM 会自动创建正确类型的数组并填充。
示例:Listlist = Arrays.asList("a", "b", "c"); String[] array = list.toArray(new String[0]);
也可以传入已有长度的数组,如 new String[list.size()],效果相同。
注意事项
• Arrays.asList() 返回的 List 是固定大小的不能调用 add 或 remove,否则抛出 UnsupportedOperationException。
• 基本类型数组(如 int[])不能直接转 List因为泛型不支持基本类型,需手动转换或使用 Stream。
示例:int[] intArray = {1, 2, 3};
List integerList = Arrays.stream(intArray)
.boxed()
.collect(Collectors.toList());
• 数组和 List 的引用关系Arrays.asList() 返回的 List 底层仍引用原数组,修改任一方会影响另一方。
基本上就这些。根据是否需要修改、数据类型和 Java 版本选择合适的方式即可。











