请列举 Java 中 List 接口的主要实现类,并简要说明它们各自的特点。
考察说明
考查对 Java 集合框架中 List 接口实现的了解程度。
回答思路
- 【回答框架 1】List 接口是 Java 集合框架中表示有序、可重复元素集合的接口。主要实现类包括 ArrayList、LinkedList、Vector(及其子类 Stack)和 CopyOnWriteArrayList。
- 【回答框架 2】ArrayList 基于动态数组实现,支持随机访问,索引访问时间复杂度为 O(1),但中间插入和删除元素需要移动后续元素,时间复杂度为 O(n)。非线程安全。
- 【回答框架 3】LinkedList 基于双向链表实现,支持快速插入和删除(时间复杂度 O(1)),但随机访问需要遍历,时间复杂度为 O(n)。非线程安全。
- 【回答框架 4】Vector 是早期提供的线程安全实现,其方法使用 synchronized 修饰,性能开销较大,不推荐使用。Stack 继承自 Vector,表示栈结构。
- 【回答框架 5】CopyOnWriteArrayList 是并发包中的线程安全实现,读操作无锁,写操作复制整个数组,适用于读多写少的场景。
- 【关键点 1】List 接口的主要实现类有 ArrayList、LinkedList、Vector、Stack 和 CopyOnWriteArrayList。
- 【关键点 2】ArrayList 适合随机访问,LinkedList 适合频繁插入删除。
- 【关键点 3】Vector 线程安全但性能较低,CopyOnWriteArrayList 适合读多写少的并发场景。
- 【易错点 1】不要混淆 ArrayList 和 LinkedList 的性能特点。
- 【易错点 2】不要使用 Vector 作为默认选择。
- 【易错点 3】CopyOnWriteArrayList 的写操作开销大。