1. 基本概念
2. 用法对比
Arrays.asList
的用法
String[] array = {"Apple", "Banana", "Cherry"};
List<String> list = Arrays.asList(array);
ArrayList
的用法
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
3. 特性对比
1. 大小可变性
2. 与原始数组的关系
3. 性能
4. 使用场景
Arrays.asList
的使用场景:
- 静态或不可变集合: 当你需要一个静态、不可变的
List
,并且只想进行读取操作时,可以使用 Arrays.asList
。 - 方法参数: 当你需要将一个数组作为
List
传递给方法时,使用 Arrays.asList
可以快速转换。 - 固定大小集合: 当你知道集合的大小不会改变时,
Arrays.asList
是一个轻量级的选择。
ArrayList
的使用场景:
- 动态集合: 当你需要一个可以动态增加或减少元素的集合时,
ArrayList
是首选。 - 频繁操作:
ArrayList
支持添加、删除、修改元素等操作,非常适合需要对集合进行频繁操作的场景。 - 随机访问:
ArrayList
提供了高效的随机访问能力(通过索引),非常适合需要快速访问元素的场景。
5. 代码示例对比
Arrays.asList
String[] array = {"A", "B", "C"};
List<String> list = Arrays.asList(array);
list.set(1, "X");
System.out.println(list);
System.out.println(Arrays.toString(array));
ArrayList
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
list.add("D");
list.remove("B");
System.out.println(list);
总结
Arrays.asList
: 适用于创建一个固定大小、与数组共享内存的 List
。常用于静态、不可变的集合场景。ArrayList
: 适用于需要动态调整大小、频繁操作的集合场景。