当前位置: 首页 > news >正文

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. 核心选型:看顺序、看去重、看性能、看线程安全
http://www.jsqmd.com/news/888775/

相关文章:

  • 01-认知篇-总览-HybridCLR是什么
  • 基于大语言模型的GitHub PR描述自动生成工具设计与实践
  • 微信聊天记录误删别慌!官方恢复方法实操指南
  • 安全攻防 - 03 TLCP 握手:双证书、密码套件与常见术语
  • 用Xilinx Artix-7 FPGA驱动TDC-GPX2:一个完整的状态机SPI控制模块实现
  • 学生党免费降AI工具实测:靠谱降重降AI首选推荐
  • 2026年昭通市本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 大熊猫898989
  • 三步实现百度网盘高速下载:告别龟速,拥抱全速时代
  • 百度网盘提取码一键查询:3步告别资源获取烦恼
  • 别再盲选大模型了!DeepSeek-V2/V3/R1在中文长文本、代码生成、数学推理三类场景的TOP-1准确率差距高达23.6%,你用对版本了吗?
  • bili2text终极指南:三分钟将B站视频变文字稿的免费神器
  • BepInEx插件框架:让每个玩家都能成为游戏改造师
  • 2026年岳阳市正规上门黄金白银回收品牌门店名录 K金+铂金+金条+银条回收门店联系方式推荐+指南 - 盛世金银回收
  • 2026年肇庆市本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 大熊猫898989
  • IDA Pro花指令清除三法:字节匹配、CFG裁剪与语义替换
  • 2026 SSH工具怎么选:多台 VPS 管理时,什么类型更省心?
  • 智能体+RAG+规划:构建AI节日助手的架构设计与工程实践
  • 三维针刺材料多尺度力学仿真复现
  • 深圳电力设备插箱厂家
  • 用AT89C51单片机+Proteus仿真,手把手教你做一个能测方波、锯齿波的简易数字频率计
  • 2026年镇江市本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 大熊猫898989
  • 别再写“大灰狼吃小红帽”了!用LaTeX写CVPR论文,避开这些新手坑
  • GPT-5.4 vs Gemini 3.1 Pro vs DeepSeek V4:500任务实战横评与成本优化指南
  • 2026年云浮市正规上门黄金白银回收品牌门店名录 K金+铂金+金条+银条回收门店联系方式推荐+指南 - 盛世金银回收
  • AndLua加密APK逆向分析:从字节码提取到Java逻辑还原
  • 西门子S7-1200固件V3.0下,MODBUS TCP客户端与Modbus Slave联调全记录
  • TPS薄板样条:一个物理模型如何优雅地解决图像变形问题?
  • 2026年郑州市本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 大熊猫898989
  • 2026年运城市正规上门黄金白银回收品牌门店名录 K金+铂金+金条+银条回收门店联系方式推荐+指南 - 盛世金银回收
  • 别再死记硬背了!用Python代码5分钟搞懂模运算的4个核心公式