以下是Java集合框架中接口与实现类关系的结构化总结及对应的文本示意图
Java集合框架核心结构总览
文本示意图
Collection (接口)
├── List (有序可重复集合)
│ ├── ArrayList (动态数组实现)
│ ├── LinkedList (双向链表实现,同时实现Deque接口)
│ └── Vector (线程安全数组,已过时)
│
├── Set (无序不可重复集合)
│ ├── HashSet (哈希表实现)
│ ├── LinkedHashSet (链表维护插入顺序的哈希表)
│ └── TreeSet (红黑树实现,支持排序)
│
└── Queue (队列接口)
├── LinkedList (双向链表实现队列)
└── PriorityQueue (优先级堆实现)
Map (独立接口,键值对存储)
├── HashMap (哈希表实现)
├── LinkedHashMap (链表维护插入顺序)
└── TreeMap (红黑树实现,支持键排序)
接口与实现类详细关系
1. Collection接口及其子接口
• 核心接口:Collection
是所有单列集合的根接口,定义基础操作方法如 add()
, remove()
, size()
等。
• 子接口:
• List:有序可重复集合,支持索引访问。
◦ 实现类:
◦ ArrayList
:基于动态数组,查询快、增删慢。
◦ LinkedList
:基于双向链表,增删快、查询慢,同时实现 Deque
接口支持队列操作。
◦ Vector
:线程安全的动态数组,已逐渐被 ArrayList
替代。
• Set:无序不可重复集合,依赖 equals()
和 hashCode()
判断元素唯一性。
◦ 实现类:
◦ HashSet
:基于哈希表,查询速度最快。
◦ LinkedHashSet
:在 HashSet
基础上用链表维护插入顺序。
◦ TreeSet
:基于红黑树,元素按自然或自定义顺序排序。
• Queue:队列接口,支持先进先出(FIFO)或优先级操作。
◦ 实现类:
◦ LinkedList
:通过 Deque
接口实现队列功能。
◦ PriorityQueue
:基于优先级堆,元素按优先级排序。
2. Map接口及其实现类
• 核心接口:Map
是独立的键值对集合接口,键唯一,值可重复。
• 实现类:
◦ HashMap
:基于哈希表,允许 null
键和值。
◦ LinkedHashMap
:在 HashMap
基础上维护插入顺序或访问顺序。
◦ TreeMap
:基于红黑树,键按自然或自定义顺序排序。
3. 抽象类的作用
• 如 AbstractList
、AbstractSet
等抽象类,部分实现了接口方法(如迭代器、基础增删操作),供具体实现类继承以简化开发。
关键设计特点
- List与Set的区别:
•List
保留插入顺序,允许重复;Set
不保留顺序,禁止重复。 - 线程安全性:
• 大多数集合类(如ArrayList
、HashMap
)非线程安全,可通过Collections.synchronizedList()
包装实现同步。 - 性能优化选择:
• 频繁查询用ArrayList
或HashSet
;频繁增删用LinkedList
;排序需求用TreeSet
或TreeMap
。
扩展关系图(简化版)
Collection
│
├── List → ArrayList, LinkedList, Vector
├── Set → HashSet, LinkedHashSet, TreeSet
└── Queue → LinkedList, PriorityQueue
Map → HashMap, LinkedHashMap, TreeMap