news 2026/5/26 7:26:12

Java集合全解析:体系架构+分类详解+底层原理+使用场景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java集合全解析:体系架构+分类详解+底层原理+使用场景

前言

Java集合框架是Java开发必须掌握的核心基础,也是面试高频考点、日常编码最常用工具。相比于固定长度的数组,集合具备动态扩容、丰富API、多种数据结构实现等优势,能满足各类数据存储需求。

很多新手甚至初中级开发者,对Java集合体系混乱不清,分不清各个集合的特点、区别与选型。本文将系统化梳理Java所有集合类,搭配架构流程图、分类表格、原理详解,带你一篇吃透Java集合。


一、Java集合整体架构:顶层设计

1.1 集合两大核心体系

Java集合全部位于java.util包下,分为两大独立体系,无继承关系:

  1. Collection 单列集合:存储单个对象(元素)
  2. Map 双列集合:存储键值对(Key-Value)

1.2 集合完整体系架构流程图

Java集合框架

Collection 单列

Map 双列

List 有序可重复

ArrayList

LinkedList

Vector

Stack

Set 不可重复

HashSet

LinkedHashSet

TreeSet

Queue 队列

ArrayDeque

PriorityQueue

HashMap

LinkedHashMap

TreeMap

Hashtable

Properties

JUC并发安全集合

CopyOnWriteArrayList

CopyOnWriteArraySet

ConcurrentHashMap

1.3 三大顶层接口特性

接口结构有序性重复性核心作用
Collection单列依实现而定依实现而定存储单个对象
List单列插入有序可重复按索引操作数据
Set单列无序/排序不可重复元素去重
Map双列依实现而定Key唯一键值对映射

二、List集合:有序、可重复、索引访问

List是开发中最常用的集合,特点:插入有序、可重复、有索引、随机访问快

2.1 ArrayList:动态数组实现

  1. 底层结构:Object[] 动态数组
  2. 默认容量:10,扩容1.5倍
  3. 线程安全:不安全
  4. 优点:查询快、遍历快、内存占用小
  5. 缺点:中间增删慢、需要扩容移位
  6. 适用场景读多写少,单线程首选List

2.2 LinkedList:双向链表实现

  1. 底层结构:双向链表
  2. 线程安全:不安全
  3. 优点:头尾增删极快、无需扩容
  4. 缺点:查询慢、占用内存大
  5. 适用场景频繁增删、队列/栈场景

2.3 Vector:线程安全数组

  1. 底层结构:动态数组
  2. 线程安全synchronized加锁
  3. 缺点:性能极差、已废弃
  4. 替代方案:CopyOnWriteArrayList

2.4 Stack:栈结构

  1. 继承Vector,后进先出(LIFO)
  2. 废弃,推荐用 ArrayDeque

三、Set集合:无序、不可重复、去重专用

Set集合核心特点:不允许重复元素,无索引,依赖hashCode()equals()去重。

3.1 HashSet:哈希表实现

  1. 底层:HashMap(Key存元素)
  2. 特点:无序、去重、查询快
  3. 线程安全:不安全
  4. 场景:快速去重、不关心顺序

3.2 LinkedHashSet:哈希表+双向链表

  1. 底层:LinkedHashMap
  2. 特点保持插入顺序、去重
  3. 场景:去重且需要保证顺序

3.3 TreeSet:红黑树实现

  1. 底层:TreeMap
  2. 特点自动排序(自然排序/比较器)
  3. 场景:去重+自动排序

四、Queue集合:队列、先进先出

Queue遵循FIFO(先进先出),常用于任务排队、消息队列。

4.1 ArrayDeque:数组双端队列

  1. 底层:动态数组
  2. 性能:优于LinkedList
  3. 场景:队列、栈(推荐使用)

4.2 PriorityQueue:优先级队列

  1. 底层:最小堆
  2. 特点:按优先级排序,而非插入顺序
  3. 场景:优先级调度、TopN 问题

五、Map集合:键值对存储、Key唯一

Map存储Key-Value键值对,Key唯一不可重复,Value可重复。

5.1 HashMap:最常用Map

  1. 底层:JDK1.8+ 数组+链表+红黑树
  2. 默认容量:16,负载因子0.75
  3. 线程安全:不安全
  4. 允许null:Key和Value都允许null
  5. 场景:绝大多数键值对业务

5.2 LinkedHashMap:有序Map

  1. 底层:HashMap+双向链表
  2. 特点:保持插入顺序/访问顺序
  3. 场景:缓存(LRU)、有序映射

5.3 TreeMap:排序Map

  1. 底层:红黑树
  2. 特点:Key自动排序
  3. 场景:需要按Key排序的业务

5.4 Hashtable:线程安全Map

  1. 特点synchronized加锁、不允许null
  2. 缺点:性能差、已废弃
  3. 替代:ConcurrentHashMap

5.5 Properties:配置文件专用

  1. 继承Hashtable
  2. Key/Value:只支持String
  3. 场景:读取.properties配置文件

六、JUC并发安全集合:多线程专用

普通集合线程不安全,并发场景必须使用JUC(java.util.concurrent)包下的安全集合:

  1. CopyOnWriteArrayList:读多写少并发List
  2. CopyOnWriteArraySet:线程安全去重Set
  3. ConcurrentHashMap:高并发Map(首选)
  4. ConcurrentLinkedQueue:无锁并发队列

七、集合快速选型流程图(开发必备)

单列对象

键值对

可重复

不可重复

无序

插入有序

自动排序

无序

插入有序

排序

开始选型

存储类型?

需要重复?

需要排序?

查询多?

需要有序?

ArrayList

LinkedList

HashSet

LinkedHashSet

TreeSet

HashMap

LinkedHashMap

TreeMap

多线程?

CopyOnWriteArrayList/ConcurrentHashMap


八、所有常用集合核心对比表

集合底层有序重复线程安全核心优势
ArrayList数组插入有序可重复查询最快
LinkedList双向链表插入有序可重复增删最快
HashSetHashMap无序不可去重快
LinkedHashSetLinkedHashMap插入有序不可去重+保序
TreeSet红黑树排序不可排序+去重
HashMap数组+链表+红黑树无序Key唯一综合性能最优
LinkedHashMapHashMap+链表插入有序Key唯一保序Map
TreeMap红黑树Key排序Key唯一排序Map
ConcurrentHashMap分段锁+CAS无序Key唯一高并发Map

九、集合开发选型终极口诀

  1. 普通读多写少→ ArrayList
  2. 频繁增删→ LinkedList / ArrayDeque
  3. 去重无序→ HashSet
  4. 去重保序→ LinkedHashSet
  5. 去重排序→ TreeSet
  6. 普通键值对→ HashMap
  7. 有序键值对→ LinkedHashMap
  8. 多线程并发→ ConcurrentHashMap / CopyOnWriteArrayList

十、总结

  1. Java集合分为Collection单列Map双列两大体系;
  2. List保证有序可重复,Set保证不可重复,Map存储键值对;
  3. 底层数据结构决定集合性能(数组查询快、链表增删快、红黑树排序快);
  4. 单线程用普通集合,多线程必须用JUC并发集合;
  5. 选型依据:有序性、重复性、读写比例、并发场景

关键点回顾

  1. Collection:List(有序可重复)、Set(不可重复)、Queue(队列)
  2. Map:HashMap(常用)、TreeMap(排序)、LinkedHashMap(有序)
  3. 并发集合:ConcurrentHashMap、CopyOnWriteArrayList
  4. 核心选型:看顺序、看去重、看性能、看线程安全
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 7:24:58

GHelper实战指南:3个AMD降压超频核心功能深度解析

GHelper实战指南:3个AMD降压超频核心功能深度解析 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expert…

作者头像 李华
网站建设 2026/5/26 7:23:43

长沙智能家居哪家靠谱

在长沙,想要为家装或办公空间部署一套可靠、省心的全屋智能系统,选择一家专业的本地服务商至关重要。相比单纯购买设备,从方案设计到施工落地再到长期运维的全流程服务,才是保障智能家居体验的关键。如果你正在问“长沙智能家居哪…

作者头像 李华
网站建设 2026/5/26 7:23:33

一文讲清400电话如何办理?

今天给大家分享一个极其实用的企业利器——400电话!本文包含了详细的办理流程、所需材料、所需费用满满的干货,一定要看完,需要的老板可以收藏备用,以后可能用到。什么是400电话业务? 400业务又称“全国统一接入码业务…

作者头像 李华
网站建设 2026/5/26 7:21:16

Pixel 4刷Android 13后Frida失效的三大底层原因与修复方案

1. 这不是一次普通升级:Pixel 4刷Android 13后Frida环境崩塌的真实现场我拆开那台闲置两年的Pixel 4时,手是稳的;刷完Android 13正式版(SP2A.230505.001)重启进系统时,心也是定的——直到我在adb shell里敲…

作者头像 李华
网站建设 2026/5/26 7:14:57

ARMv8 AArch64系统寄存器AFSR0_EL3与AFSR1_EL1详解

1. AArch64系统寄存器概述在ARMv8架构中,系统寄存器扮演着处理器核心与操作系统交互的关键角色。这些寄存器不同于通用寄存器,它们专门用于控制和监控处理器的各种状态和行为。作为一名长期从事ARM架构开发的工程师,我经常需要与这些寄存器打…

作者头像 李华
网站建设 2026/5/26 7:13:34

ASP.NET Core与Angular全栈开发自动化:代码生成器与AI代理协同工作流

1. 项目概述:全栈开发的自动化革命在过去的几年里,我深度参与了多个基于 ASP.NET Core Web API 和 Angular 的企业级项目。一个反复出现的痛点让我印象深刻:从零开始搭建一个具备基础 CRUD、用户认证、权限管理和前端路由的模块,往…

作者头像 李华