前言Java集合框架是Java开发必须掌握的核心基础也是面试高频考点、日常编码最常用工具。相比于固定长度的数组集合具备动态扩容、丰富API、多种数据结构实现等优势能满足各类数据存储需求。很多新手甚至初中级开发者对Java集合体系混乱不清分不清各个集合的特点、区别与选型。本文将系统化梳理Java所有集合类搭配架构流程图、分类表格、原理详解带你一篇吃透Java集合。一、Java集合整体架构顶层设计1.1 集合两大核心体系Java集合全部位于java.util包下分为两大独立体系无继承关系Collection 单列集合存储单个对象元素Map 双列集合存储键值对Key-Value1.2 集合完整体系架构流程图Java集合框架Collection 单列Map 双列List 有序可重复ArrayListLinkedListVectorStackSet 不可重复HashSetLinkedHashSetTreeSetQueue 队列ArrayDequePriorityQueueHashMapLinkedHashMapTreeMapHashtablePropertiesJUC并发安全集合CopyOnWriteArrayListCopyOnWriteArraySetConcurrentHashMap1.3 三大顶层接口特性接口结构有序性重复性核心作用Collection单列依实现而定依实现而定存储单个对象List单列插入有序可重复按索引操作数据Set单列无序/排序不可重复元素去重Map双列依实现而定Key唯一键值对映射二、List集合有序、可重复、索引访问List是开发中最常用的集合特点插入有序、可重复、有索引、随机访问快。2.1 ArrayList动态数组实现底层结构Object[] 动态数组默认容量10扩容1.5倍线程安全不安全优点查询快、遍历快、内存占用小缺点中间增删慢、需要扩容移位适用场景读多写少单线程首选List2.2 LinkedList双向链表实现底层结构双向链表线程安全不安全优点头尾增删极快、无需扩容缺点查询慢、占用内存大适用场景频繁增删、队列/栈场景2.3 Vector线程安全数组底层结构动态数组线程安全synchronized加锁缺点性能极差、已废弃替代方案CopyOnWriteArrayList2.4 Stack栈结构继承Vector后进先出LIFO废弃推荐用 ArrayDeque三、Set集合无序、不可重复、去重专用Set集合核心特点不允许重复元素无索引依赖hashCode()和equals()去重。3.1 HashSet哈希表实现底层HashMapKey存元素特点无序、去重、查询快线程安全不安全场景快速去重、不关心顺序3.2 LinkedHashSet哈希表双向链表底层LinkedHashMap特点保持插入顺序、去重场景去重且需要保证顺序3.3 TreeSet红黑树实现底层TreeMap特点自动排序自然排序/比较器场景去重自动排序四、Queue集合队列、先进先出Queue遵循FIFO先进先出常用于任务排队、消息队列。4.1 ArrayDeque数组双端队列底层动态数组性能优于LinkedList场景队列、栈推荐使用4.2 PriorityQueue优先级队列底层最小堆特点按优先级排序而非插入顺序场景优先级调度、TopN 问题五、Map集合键值对存储、Key唯一Map存储Key-Value键值对Key唯一不可重复Value可重复。5.1 HashMap最常用Map底层JDK1.8 数组链表红黑树默认容量16负载因子0.75线程安全不安全允许nullKey和Value都允许null场景绝大多数键值对业务5.2 LinkedHashMap有序Map底层HashMap双向链表特点保持插入顺序/访问顺序场景缓存LRU、有序映射5.3 TreeMap排序Map底层红黑树特点Key自动排序场景需要按Key排序的业务5.4 Hashtable线程安全Map特点synchronized加锁、不允许null缺点性能差、已废弃替代ConcurrentHashMap5.5 Properties配置文件专用继承HashtableKey/Value只支持String场景读取.properties配置文件六、JUC并发安全集合多线程专用普通集合线程不安全并发场景必须使用JUCjava.util.concurrent包下的安全集合CopyOnWriteArrayList读多写少并发ListCopyOnWriteArraySet线程安全去重SetConcurrentHashMap高并发Map首选ConcurrentLinkedQueue无锁并发队列七、集合快速选型流程图开发必备单列对象键值对可重复不可重复是否无序插入有序自动排序无序插入有序排序是开始选型存储类型?需要重复?需要排序?查询多?需要有序?ArrayListLinkedListHashSetLinkedHashSetTreeSetHashMapLinkedHashMapTreeMap多线程?CopyOnWriteArrayList/ConcurrentHashMap八、所有常用集合核心对比表集合底层有序重复线程安全核心优势ArrayList数组插入有序可重复否查询最快LinkedList双向链表插入有序可重复否增删最快HashSetHashMap无序不可否去重快LinkedHashSetLinkedHashMap插入有序不可否去重保序TreeSet红黑树排序不可否排序去重HashMap数组链表红黑树无序Key唯一否综合性能最优LinkedHashMapHashMap链表插入有序Key唯一否保序MapTreeMap红黑树Key排序Key唯一否排序MapConcurrentHashMap分段锁CAS无序Key唯一是高并发Map九、集合开发选型终极口诀普通读多写少→ ArrayList频繁增删→ LinkedList / ArrayDeque去重无序→ HashSet去重保序→ LinkedHashSet去重排序→ TreeSet普通键值对→ HashMap有序键值对→ LinkedHashMap多线程并发→ ConcurrentHashMap / CopyOnWriteArrayList十、总结Java集合分为Collection单列和Map双列两大体系List保证有序可重复Set保证不可重复Map存储键值对底层数据结构决定集合性能数组查询快、链表增删快、红黑树排序快单线程用普通集合多线程必须用JUC并发集合选型依据有序性、重复性、读写比例、并发场景。关键点回顾CollectionList(有序可重复)、Set(不可重复)、Queue(队列)MapHashMap(常用)、TreeMap(排序)、LinkedHashMap(有序)并发集合ConcurrentHashMap、CopyOnWriteArrayList核心选型看顺序、看去重、看性能、看线程安全
Java集合全解析:体系架构+分类详解+底层原理+使用场景
发布时间:2026/5/26 7:26:20
前言Java集合框架是Java开发必须掌握的核心基础也是面试高频考点、日常编码最常用工具。相比于固定长度的数组集合具备动态扩容、丰富API、多种数据结构实现等优势能满足各类数据存储需求。很多新手甚至初中级开发者对Java集合体系混乱不清分不清各个集合的特点、区别与选型。本文将系统化梳理Java所有集合类搭配架构流程图、分类表格、原理详解带你一篇吃透Java集合。一、Java集合整体架构顶层设计1.1 集合两大核心体系Java集合全部位于java.util包下分为两大独立体系无继承关系Collection 单列集合存储单个对象元素Map 双列集合存储键值对Key-Value1.2 集合完整体系架构流程图Java集合框架Collection 单列Map 双列List 有序可重复ArrayListLinkedListVectorStackSet 不可重复HashSetLinkedHashSetTreeSetQueue 队列ArrayDequePriorityQueueHashMapLinkedHashMapTreeMapHashtablePropertiesJUC并发安全集合CopyOnWriteArrayListCopyOnWriteArraySetConcurrentHashMap1.3 三大顶层接口特性接口结构有序性重复性核心作用Collection单列依实现而定依实现而定存储单个对象List单列插入有序可重复按索引操作数据Set单列无序/排序不可重复元素去重Map双列依实现而定Key唯一键值对映射二、List集合有序、可重复、索引访问List是开发中最常用的集合特点插入有序、可重复、有索引、随机访问快。2.1 ArrayList动态数组实现底层结构Object[] 动态数组默认容量10扩容1.5倍线程安全不安全优点查询快、遍历快、内存占用小缺点中间增删慢、需要扩容移位适用场景读多写少单线程首选List2.2 LinkedList双向链表实现底层结构双向链表线程安全不安全优点头尾增删极快、无需扩容缺点查询慢、占用内存大适用场景频繁增删、队列/栈场景2.3 Vector线程安全数组底层结构动态数组线程安全synchronized加锁缺点性能极差、已废弃替代方案CopyOnWriteArrayList2.4 Stack栈结构继承Vector后进先出LIFO废弃推荐用 ArrayDeque三、Set集合无序、不可重复、去重专用Set集合核心特点不允许重复元素无索引依赖hashCode()和equals()去重。3.1 HashSet哈希表实现底层HashMapKey存元素特点无序、去重、查询快线程安全不安全场景快速去重、不关心顺序3.2 LinkedHashSet哈希表双向链表底层LinkedHashMap特点保持插入顺序、去重场景去重且需要保证顺序3.3 TreeSet红黑树实现底层TreeMap特点自动排序自然排序/比较器场景去重自动排序四、Queue集合队列、先进先出Queue遵循FIFO先进先出常用于任务排队、消息队列。4.1 ArrayDeque数组双端队列底层动态数组性能优于LinkedList场景队列、栈推荐使用4.2 PriorityQueue优先级队列底层最小堆特点按优先级排序而非插入顺序场景优先级调度、TopN 问题五、Map集合键值对存储、Key唯一Map存储Key-Value键值对Key唯一不可重复Value可重复。5.1 HashMap最常用Map底层JDK1.8 数组链表红黑树默认容量16负载因子0.75线程安全不安全允许nullKey和Value都允许null场景绝大多数键值对业务5.2 LinkedHashMap有序Map底层HashMap双向链表特点保持插入顺序/访问顺序场景缓存LRU、有序映射5.3 TreeMap排序Map底层红黑树特点Key自动排序场景需要按Key排序的业务5.4 Hashtable线程安全Map特点synchronized加锁、不允许null缺点性能差、已废弃替代ConcurrentHashMap5.5 Properties配置文件专用继承HashtableKey/Value只支持String场景读取.properties配置文件六、JUC并发安全集合多线程专用普通集合线程不安全并发场景必须使用JUCjava.util.concurrent包下的安全集合CopyOnWriteArrayList读多写少并发ListCopyOnWriteArraySet线程安全去重SetConcurrentHashMap高并发Map首选ConcurrentLinkedQueue无锁并发队列七、集合快速选型流程图开发必备单列对象键值对可重复不可重复是否无序插入有序自动排序无序插入有序排序是开始选型存储类型?需要重复?需要排序?查询多?需要有序?ArrayListLinkedListHashSetLinkedHashSetTreeSetHashMapLinkedHashMapTreeMap多线程?CopyOnWriteArrayList/ConcurrentHashMap八、所有常用集合核心对比表集合底层有序重复线程安全核心优势ArrayList数组插入有序可重复否查询最快LinkedList双向链表插入有序可重复否增删最快HashSetHashMap无序不可否去重快LinkedHashSetLinkedHashMap插入有序不可否去重保序TreeSet红黑树排序不可否排序去重HashMap数组链表红黑树无序Key唯一否综合性能最优LinkedHashMapHashMap链表插入有序Key唯一否保序MapTreeMap红黑树Key排序Key唯一否排序MapConcurrentHashMap分段锁CAS无序Key唯一是高并发Map九、集合开发选型终极口诀普通读多写少→ ArrayList频繁增删→ LinkedList / ArrayDeque去重无序→ HashSet去重保序→ LinkedHashSet去重排序→ TreeSet普通键值对→ HashMap有序键值对→ LinkedHashMap多线程并发→ ConcurrentHashMap / CopyOnWriteArrayList十、总结Java集合分为Collection单列和Map双列两大体系List保证有序可重复Set保证不可重复Map存储键值对底层数据结构决定集合性能数组查询快、链表增删快、红黑树排序快单线程用普通集合多线程必须用JUC并发集合选型依据有序性、重复性、读写比例、并发场景。关键点回顾CollectionList(有序可重复)、Set(不可重复)、Queue(队列)MapHashMap(常用)、TreeMap(排序)、LinkedHashMap(有序)并发集合ConcurrentHashMap、CopyOnWriteArrayList核心选型看顺序、看去重、看性能、看线程安全