Skip to content

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的区别

  1. 底层数据结构不同

    • ArrayList基于动态数组实现,支持快速随机访问。
    • LinkedList基于双向链表实现,适合频繁的插入和删除操作。
  2. 操作性能差异

    • ArrayList在随机访问方面表现优异,因为其通过索引直接定位元素,时间复杂度为O(1)。但在插入或删除中间元素时效率较低,需要移动大量元素。
    • LinkedList在插入和删除操作上更高效,因为仅需调整相邻节点的引用关系,但随机访问性能较差,需要从头或尾遍历节点,时间复杂度为O(n)。
  3. 接口实现不同

    • 两者均实现了List接口,提供了列表的基本功能。
    • LinkedList还额外实现了Deque接口,具备队列和双端队列的特性,支持如addFirstaddLast等方法。