Appearance
Collection
是最顶层的接口,下面是两个主要子接口:List
(列表)和 Set
(集合)。每个都有它们各自的实现类。例如:
- List 接口通常由
ArrayList
,LinkedList
, 和Vector
等实现。 - Set 接口则有
HashSet
,LinkedHashSet
, 和TreeSet
等实现。
此外,还有一个特殊的接口是 Deque(双端队列),它与 Queue 有关联。常见的实现类包括:
- ArrayDeque
- LinkedList
以下是JDK 21集合类层次结构的一个简要关系:
Collection
├── List
│ ├── ArrayList
│ ├── LinkedList
│ └── Vector
├── Set
│ ├── HashSet
│ ├── LinkedHashSet
│ └── TreeSet
└── Deque (implements Queue)
└── ArrayDeque
注:LinkedList 实现了 List, Deque 和 Queue 接口。
ArrayList与LinkedList的区别
底层数据结构不同
ArrayList
基于动态数组实现,支持快速随机访问。LinkedList
基于双向链表实现,适合频繁的插入和删除操作。
操作性能差异
ArrayList
在随机访问方面表现优异,因为其通过索引直接定位元素,时间复杂度为O(1)。但在插入或删除中间元素时效率较低,需要移动大量元素。LinkedList
在插入和删除操作上更高效,因为仅需调整相邻节点的引用关系,但随机访问性能较差,需要从头或尾遍历节点,时间复杂度为O(n)。
接口实现不同
- 两者均实现了
List
接口,提供了列表的基本功能。 LinkedList
还额外实现了Deque
接口,具备队列和双端队列的特性,支持如addFirst
、addLast
等方法。
- 两者均实现了