下面是 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
实现类可以显著提高程序的性能和效率。