Arrays.asList 与 new ArrayList(Arrays.asList()) 的区别
- 作者
本文将简要介绍 Arrays.asList(array)
和 new ArrayList<>(Arrays.asList(array))
这两种将数组转换为列表的方法之间的主要区别。
Arrays.asList
Arrays.asList
方法可以将数组转换为固定大小的 List 对象。这个 List 实际上只是原数组的一个包装器,不会复制或创建新的数据。
主要特点:
- 不能修改列表长度(不允许添加或删除元素)
- 可以修改列表中的单个元素
- 对列表的修改会反映到原始数组中
示例代码:
String[] array = {"A", "B", "C"};
List<String> list = Arrays.asList(array);
list.set(0, "X");
System.out.println(Arrays.toString(array)); // 输出: [X, B, C]
list.add("D"); // 抛出 UnsupportedOperationException
new ArrayList<>(Arrays.asList(array))
这种方法会创建一个独立的 ArrayList 副本。
主要特点:
- 可以自由地添加、删除元素
- 对新列表的修改不会影响原始数组
- 拥有常规 ArrayList 的所有功能
示例代码:
String[] array = {"A", "B", "C"};
List<String> list = new ArrayList<>(Arrays.asList(array));
list.set(0, "X");
list.add("D");
System.out.println(list); // 输出: [X, B, C, D]
System.out.println(Arrays.toString(array)); // 输出: [A, B, C]
结论
- 如果只需要一个只读的列表视图,使用
Arrays.asList
- 如果需要一个可修改的独立列表,使用
new ArrayList<>(Arrays.asList(array))
选择合适的方法取决于你的具体需求和使用场景。
分享内容