java 列表如何实现
列表的实现方式
在 Java 中,列表可以通过多种方式实现,主要依赖于 List 接口及其实现类。以下是常见的实现方式:
ArrayList
ArrayList 是基于动态数组的实现,适用于频繁的随机访问操作。
- 优点:访问速度快(O(1)),适合读取操作。
- 缺点:插入和删除操作较慢(O(n)),因为需要移动元素。
示例代码:
List<String> arrayList = new ArrayList<>();
arrayList.add("A");
arrayList.add("B");
arrayList.get(0); // 访问元素
LinkedList
LinkedList 是基于双向链表的实现,适用于频繁的插入和删除操作。

- 优点:插入和删除速度快(O(1)),适合修改操作。
- 缺点:访问速度较慢(O(n)),需要遍历链表。
示例代码:
List<String> linkedList = new LinkedList<>();
linkedList.add("A");
linkedList.add("B");
linkedList.remove(0); // 删除元素
Vector
Vector 是线程安全的动态数组实现,但性能较低。
- 优点:线程安全。
- 缺点:性能较差,通常不推荐使用。
示例代码:

List<String> vector = new Vector<>();
vector.add("A");
vector.add("B");
CopyOnWriteArrayList
CopyOnWriteArrayList 是线程安全的列表实现,适用于读多写少的场景。
- 优点:线程安全且读操作无锁。
- 缺点:写操作性能较低,因为需要复制整个数组。
示例代码:
List<String> copyOnWriteList = new CopyOnWriteArrayList<>();
copyOnWriteList.add("A");
copyOnWriteList.add("B");
选择列表实现的依据
- 需要频繁随机访问:使用
ArrayList。 - 需要频繁插入和删除:使用
LinkedList。 - 需要线程安全:使用
CopyOnWriteArrayList或Vector(后者性能较差)。
其他注意事项
- 初始化时可以指定容量(如
new ArrayList<>(100)),以减少扩容开销。 - 列表支持泛型,可以存储任意类型的对象。
- 使用
Arrays.asList()可以快速将数组转换为列表,但返回的列表是固定大小的。
示例代码:
List<String> fixedSizeList = Arrays.asList("A", "B", "C");






