Java集合框架顶层拓扑有两条主线:Collection管单列元素(List有序可重复、Set无序不重复、Queue专注队列),Map管键值对映射,二者独立无继承;AbstractList等抽象类和Collections工具类属辅助角色,不改变接口主干关系。

理清 Java 集合框架的顶层拓扑,关键不是死记类图,而是抓住两条主线:一条是单列元素容器(Collection 及其子接口),另一条是键值对映射容器(Map)。它们彼此独立,没有继承关系。
Collection 是单列集合的统一父接口
Collection 本身是接口,不提供具体实现,只定义增删查遍历等通用操作(如 add()、remove()、iterator())。所有单列集合都基于它构建:
-
List:有序、可重复。元素按插入顺序排列,支持索引访问(
get(0)、set(2, obj));典型实现有ArrayList(数组-backed,查快)、LinkedList(链表-backed,首尾增删快)。 -
Set:无序、不可重复。靠
equals()+hashCode()判重;HashSet底层用HashMap实现(存值时把元素作 key、固定对象作 value);TreeSet底层用TreeMap,能自然排序或按 Comparator 排序。 -
Queue(虽未在题干出现,但同属 Collection 分支):专注入队/出队行为,如
LinkedList和PriorityQueue。
Map 是独立的双列结构,和 Collection 没有继承关系
Map 不实现 Collection,也不被 Collection 继承。它描述的是key → value 的一对一映射关系:
- Key 不允许重复(重复 put 会覆盖旧值),value 可重复。
- 常见实现:
HashMap(哈希表,非线程安全,允许 null key/value)、TreeMap(红黑树,按键排序)、LinkedHashMap(维护插入/访问顺序)。 - Map 提供三种“视图集合”:
keySet()、values()、entrySet(),它们返回的都是 Collection 类型(比如Set<K>),这是 Map 与 Collection 唯一的交集方式,但只是“借用”,不是继承。
抽象类和工具类是辅助角色,不是拓扑主干
像 AbstractList、AbstractSet、AbstractMap 这些抽象类,只是对部分方法做了默认实现,方便开发者快速自定义集合——它们属于实现细节,不影响顶层接口关系。
Collections(注意 s)是工具类,提供静态方法如 sort()、synchronizedList()、unmodifiableSet(),用于操作已有集合,不参与接口继承体系。
一句话定位四者关系
Collection 是单列集合的根接口;List 和 Set 是它的两个核心子接口;Map 是另一套平行体系,与前三者完全解耦。记住“Collection 管元素,Map 管映射”,拓扑就清晰了。

















