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

还搞不懂集合?一张图带你吃透 ArrayList、HashMap、ConcurrentHashMap 的底层原理(附7张流程图)

还搞不懂集合?一张图带你吃透 ArrayList、HashMap、ConcurrentHashMap 的底层原理(附7张流程图)

目录

  • 一、集合框架概览
  • 二、List 集合
    • 2.1 ArrayList
    • 2.2 LinkedList
    • 2.3 ArrayList 与 LinkedList 对比
  • 三、Set 集合
    • 3.1 HashSet
    • 3.2 TreeSet
    • 3.3 LinkedHashSet
  • 四、Map 集合
    • 4.1 HashMap 的底层原理
    • 4.2 TreeMap
    • 4.3 LinkedHashMap
  • 五、线程安全的集合
  • 六、遍历集合的方式对比
  • 七、实际应用场景与选型总结

一、集合框架概览

集合框架是 Java 里最常用的东西,说白了就是用来存数据、取数据的一套工具。

Java 集合主要分为两大接口:

  • Collection:存储单个元素
    • List:有序可重复 — ArrayList、LinkedList
    • Set:无序不可重复 — HashSet、TreeSet、LinkedHashSet
  • Map:存储键值对 — HashMap、TreeMap、LinkedHashMap、Hashtable
// 集合框架的继承关系(简化版)Collection├──List(有序,可重复) │ ├──ArrayList—— 数组,查快 │ └──LinkedList—— 链表,插删快 │ ├──Set(无序,不可重复) │ ├──HashSet—— 哈希表,最快 │ ├──TreeSet—— 红黑树,自动排序 │ └──LinkedHashSet—— 链表+哈希,按插入顺序Map(键值对) ├──HashMap—— 数组+链表+红黑树(重要) ├──TreeMap—— 红黑树,Key自动排序 ├──LinkedHashMap—— 链表+哈希,按插入顺序 └──Hashtable—— 线程安全,但基本被淘汰了

:上面这些类的底层实现,面试基本都会问。

整体关系图:

Map 接口(键值对)

Collection 接口

List 接口
有序、可重复

Set 接口
无序、不可重复

Map

ArrayList
底层: Object[] 数组

LinkedList
底层: 双向链表

Vector
线程安全(已淘汰)

HashSet
底层: HashMap

TreeSet
底层: TreeMap(红黑树)

LinkedHashSet
底层: LinkedHashMap

HashMap

TreeMap
底层: 红黑树

LinkedHashMap
底层: HashMap + 双向链表

Hashtable
线程安全(已淘汰)


二、List 集合

List 的特点:有序、可重复,通过索引操作元素。

2.1 ArrayList

底层是Object[] 数组

特点:查快(O(1)),插删慢(要搬数据)。

List<String>list=newArrayList<>();list.add("hello");list.add("world");list.add(1,"java");// 指定位置插入,后面的元素往后挪list.remove("hello");// 按元素删list.remove(0);// 按索引删System.out.println(list.get(0));// 通过索引取值

扩容机制

ArrayList 底层数组默认容量是10(JDK 8)。满了之后会自动扩容——每次扩成原来的1.5 倍

// 源码简化版(ArrayList.grow)intnewCapacity=oldCapacity+(oldCapacity>>1);// oldCapacity * 1.5

如果你知道大概要存多少数据,创建 ArrayList 的时候直接指定初始容量,避免频繁扩容。(new ArrayList<>(1000)

ArrayList 扩容流程图:

http://www.jsqmd.com/news/874043/

相关文章:

  • 工具要工程化。
  • Codeforces Round 1057
  • 深度学习篇---图像分类、目标检测和图像分割任务对比
  • 多云安全态势:管理多个云环境的安全状态
  • 哪家工控一体机厂家专业?2026年5月推荐TOP5对比案例防尘防震评测特点 - 品牌推荐
  • 软考软件设计师 · 考前5天终极精炼
  • 211本科985硕拿下淘天AI二面!全程无代码,这面试题火了!
  • 2026年第二季度,如何甄选一家可靠的山地车制造合作伙伴? - 2026年企业推荐榜
  • Invoke-Obfuscation深度解析:PowerShell混淆技术的实战指南与防御策略
  • 畜牧场景电加热风机技术拆解与选型实操指南:养鸭专用风机/农业机械/农牧机械设备/冷风机/厂房降温风机/商品鸡平养自动料线/选择指南 - 优质品牌商家
  • 前端全流程求职Skill 攻略
  • 数据主权与伦理治理:构建下一代数字文明框架
  • 镜像视界浙江科技有限公司|数字孪生・视频孪生・无感定位・跨镜追踪 技术地位与核心优势
  • 3个PDF编辑痛点,用这个免费工具轻松搞定!PDF补丁丁全面解析
  • 政务管理领域大模型应用场景
  • Lindy自动化不是IT部门的事!CIO亲述:如何用“业务-技术-合规”三权制衡模型锁定首期300万降本收益
  • 2026年5月主流电竞鼠标品牌十大排行榜推荐:专业评测手型适配案例价格 - 品牌推荐
  • AI英语背单词APP 的开发费用
  • 开源AI Agent:OpenCode集成OMO原理及实践
  • 2026钻石回收技术解析:北京手表回收、北京老铺黄金回收、北京虫草回收、北京钻石回收、北京黄金回收、北京黄金抵押选择指南 - 优质品牌商家
  • 使用curl命令在无GUI环境中快速测试Taotoken API
  • Lindy流程自动化实施倒计时手册:仅剩最后23家企业获赠官方认证治理框架V2.3(含审计就绪检查表)
  • 使用Python为你的数据分析脚本添加Taotoken大模型智能总结功能
  • 我以为AI要淘汰程序员,直到我发现真正被淘汰的,是这3种人
  • 2026年湛江代理记账公司排行:湛江社保公积金代办、/湛江财税服务/湛江一般纳税人记账怎么做/湛江个体户记账报税/选择指南 - 优质品牌商家
  • 2026年5月北戴河民宿推荐:TOP5排名家庭出游防踩雷评测专业价格 - 品牌推荐
  • 2026年5月株洲二手房中介推荐:TOP5评测专业服务特点与价格分析 - 品牌推荐
  • AI医疗Agent如何72小时通过NMPA二类证审批:附2024最新审评问答清单与材料模板
  • 进程与线程:并发编程基础
  • RMAN 增量备份(Incremental Backup)