下面是 Java 集合框架中 List 接口及其子类的详细介绍,并用 UML 图表展示层次结构关系。最后,我会用表格对比各个类的差异。
Java 集合框架中 List 接口及其子类
 
UML 类图描述
以下是 List 接口及其子类的 UML 类图描述,不包含方法。

详细说明
List 接口
- List: 有序集合,允许重复元素。提供了按位置访问元素的能力。
 
子类
-  
ArrayList:
- 基于数组实现的列表。
 - 提供快速的随机访问(O(1) 时间复杂度)。
 - 插入和删除操作(尤其是中间位置)相对较慢(O(n) 时间复杂度)。
 
 -  
LinkedList:
- 基于双向链表实现的列表。
 - 提供快速的插入和删除操作(O(1) 时间复杂度)。
 - 随机访问较慢(O(n) 时间复杂度)。
 
 -  
Vector:
- 类似于 
ArrayList,但线程安全。 - 提供快速的随机访问(O(1) 时间复杂度)。
 - 插入和删除操作(尤其是中间位置)相对较慢(O(n) 时间复杂度)。
 
 - 类似于 
 -  
Stack:
- 继承自 
Vector,用于实现栈结构。 - 提供后进先出(LIFO)的访问方式。
 - 提供快速的随机访问(O(1) 时间复杂度)。
 - 插入和删除操作(尤其是中间位置)相对较慢(O(n) 时间复杂度)。
 
 - 继承自 
 
表格对比各个类差异
| 特性 | ArrayList | LinkedList | Vector | Stack | 
|---|---|---|---|---|
| 实现方式 | 基于数组 | 基于双向链表 | 基于数组 | 基于数组(继承自 Vector) | 
| 线程安全性 | 不安全 | 不安全 | 线程安全 | 线程安全 | 
| 随机访问性能 | 快(O(1)) | 慢(O(n)) | 快(O(1)) | 快(O(1)) | 
| 插入/删除性能 | 慢(尤其是中间位置,O(n)) | 快(O(1)) | 慢(尤其是中间位置,O(n)) | 慢(尤其是中间位置,O(n)) | 
| 内存使用 | 固定大小数组,可能浪费空间 | 动态分配节点,内存使用更灵活 | 固定大小数组,可能浪费空间 | 固定大小数组,可能浪费空间 | 
| 适用场景 | 需要快速随机访问的场景 | 需要频繁插入和删除的场景 | 需要线程安全的场景 | 需要栈结构的场景 | 
总结
通过上述 UML 图表和表格对比,你可以清晰地看到 List 接口及其子类之间的层次结构关系和各自的特性。选择合适的 List 实现类可以显著提高程序的性能和效率。