前言Java集合容器是开发、面试、考试的核心重点很多同学学不会的根源分不清索引、有序、无序、去重原理、底层结构。本文一次性汇总List、Set、Map所有常用集合统一口径、统一记忆、彻底搞定集合所有易错点。一、先搞懂两个核心关键概念90%的坑都在这里1. 什么是索引索引就是集合元素的数字编号从 0 开始和数组下标完全一样。有索引的集合可以通过get(索引)、remove(索引)、set(索引,元素)精准操作元素。只有 List 系列有索引Set、Map 全部无索引没有 get(数字) 方法绝对不能通过下标取值。2. 什么是有序 / 无序最易混淆集合的有序、无序和索引无关只看「遍历顺序」分为两种存取有序遍历顺序 代码添加put/add的顺序排序有序遍历顺序 元素大小顺序和添加顺序无关无序遍历顺序随机不保证添加顺序终极避坑有序 ≠ 有索引LinkedHashSet、LinkedHashMap 是存取有序但是无索引不能 get(0)二、List 系列有索引、可重复核心特征✅ 有索引、✅ 元素可重复、✅ 存取有序、线程不安全除Vector1. ArrayList最常用底层动态扩容数组特点查询快、增删慢数组移位开销大线程不安全常用方法add / get / set / remove / size2. LinkedList底层双向链表特点首尾增删快、查询慢需要遍历查找线程不安全额外方法addFirst / addLast / pollFirst 等首尾操作3. Vector老旧淘汰底层数组线程安全方法加锁效率极低现状开发基本不用三、Set 系列无索引、不可重复核心特征❌ 无索引、❌ 元素不可重复、线程不安全1. HashSet底层HashMap哈希表数组链表红黑树有序性无序遍历顺序随机去重原理重写hashCode() equals()特点查询、增删效率极高2. LinkedHashSet底层LinkedHashMap哈希表 双向链表有序性存取有序遍历顺序添加顺序核心链表记录添加顺序哈希表负责去重注意有序但无索引3. TreeSet底层TreeMap红黑树有序性大小排序有序自动升序和添加顺序无关去重/排序原理依赖比较规则Comparable 接口 / Comparator 比较器注意自定义对象必须指定比较规则否则直接报错四、Map 系列键值对、无索引核心特征❌ 无索引、key唯一value可重复、线程不安全除Hashtable1. HashMap开发首选底层哈希表数组链表红黑树JDK1.8核心优化链表长度过长时转换红黑树提升查询效率有序性无序JDK8偶尔顺序一致是巧合不保证空值规则key允许一个nullvalue允许多个null去重key重复会覆盖旧value常用方法put / get / remove / containsKey / keySet / values / entrySet初始容量默认数组容量为16不会直接初始化大容量数组节省内存负载因子 扩容机制核心默认负载因子0.75当集合元素个数size 数组容量 × 0.75 时触发自动扩容每次扩容为原容量的2倍同时重新哈希分布所有元素链表树化规则JDK8必考当单个链表长度达到8且数组容量 ≥ 64链表自动转换为红黑树若数组容量64仅触发扩容不树化避免小容量数组浪费红黑树空间红黑树退化规则当红黑树节点数量减少至6个及以下自动退化为普通链表链表查询效率足够简化结构阈值区间说明链表长度7为临界缓冲区间既避免频繁树化、退化导致的性能抖动兼顾查询与结构稳定性红黑树五大核心特性面试必背1. 节点只有两种颜色红色、黑色2.根节点必须是黑色3. 所有叶子节点空叶子都是黑色4.红色节点的子节点一定是黑色不能出现连续红节点5. 任意节点到其所有叶子节点的路径包含的黑色节点数量相同黑高一致红黑树核心作用属于自平衡二叉查找树严格限制树的高度避免链表退化导致的查询效率暴跌保证增删查时间复杂度稳定在O(log n)2. LinkedHashMap底层哈希表 双向链表有序性存取有序遍历顺序put添加顺序空值规则支持null键、null值适用场景需要保留存储顺序的键值对数据3. TreeMap底层红黑树有序性key大小排序有序空值规则key不允许null排序规则key要么实现Comparable要么传入比较器4. Hashtable老旧淘汰线程安全效率低空值规则key、value都不能为null现状被HashMap彻底替代五、Set与Map底层对应关系必考Set 本质是阉割版 Map所有Set底层都依赖MapHashSet ➡ 底层 HashMapLinkedHashSet ➡ 底层 LinkedHashMapTreeSet ➡ 底层 TreeMap六、自定义对象去重核心规则高频考点将自定义对象如Person存入 HashSet / HashMap 实现去重必须同时重写 hashCode() 和 equals()参与equals比较的属性必须全部参与hashCode计算底层执行流程先比对hash值hash不同直接判定不同对象hash相同再比对equals七、终极汇总对照表直接背诵集合索引重复有序类型底层结构线程安全ArrayList有可重复存取有序数组不安全LinkedList有可重复存取有序双向链表不安全HashSet无不可重复无序哈希表不安全LinkedHashSet无不可重复存取有序哈希表双向链表不安全TreeSet无不可重复大小排序红黑树不安全HashMap无key唯一无序哈希表不安全LinkedHashMap无key唯一存取有序哈希表双向链表不安全TreeMap无key唯一大小排序红黑树不安全八、极简背诵口诀List有索引、可重复、存取有序Hash无序、哈希表、靠hashequals去重Linked加链表、记顺序、存取有序无索引Tree红黑树、自动排序、依赖比较规则
企业数字化 ERP 产品动态
相关推荐
自己英文原理详解 5分钟搞懂Python虚拟环境原理与速查手册 刚接手项目,把同事发的 requirements.txt 复制过来 pip install -r ,结果控制台直接红字报错: ModuleNotFoundError: No module… · 2026/9/23 10:19:05
本地跑腿系统怎么选?从四端协同与经营闭环看平台架构 做本地跑腿或本地生活平台,技术选型的核心问题往往不是“功能列表有多长”,而是这套系统能否把消费者、商家、骑手和平台管理四类角色串成一条可运营、可结算、可扩展的业务链路。本文依据已核验资料,从业务架构与工程实施角度提供选择标准&a… · 2026/9/23 10:19:05
反函数全解析:从定义、存在条件到推导实战与避坑指南 1. 反函数到底在解决什么问题1.1 从“正着算”到“倒着推”的思维转换数学里绝大多数函数都在干一件事:给你一个输入,按规则吐出唯一输出。比如 ( f(x)2x1 ),输入3,输出7。可现实中我们经常遇到相反的需求——已知输出是7… · 2026/9/23 10:18:59
KDD99流量数据上的1D-CNN入侵检测实战:非图像化建模与工业级复现 简介:本资源是一套基于Python与卷积神经网络(CNN)实现的网络入侵检测系统源码,面向网络安全方向的学习者、高校研究者及AI安全初学者,解决传统规则引擎在未知攻击识别上的局限性,提供可复现的深度学习落地实… · 2026/9/23 11:11:10
Claude Desktop 3P 模型槽位实验:本名 ID、日期后缀映射与 effort/缓存行为实测确认 Claude Desktop 3P 模型槽位实验:本名 ID、日期后缀映射与 effort/缓存行为实测确认 【免费下载链接】opencodex Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, S… · 2026/9/23 11:11:10
鬼吹灯mp3全集项目搭建:3步搞定性能优化避坑 鬼吹灯mp3全集项目搭建:3步搞定性能优化避坑 学会语法却不知怎么搭项目,是无数开发者卡在入门到进阶之间的死穴。看着文档里的代码片段能跑,一旦要处理像“鬼吹灯mp3全集”这样的大规模音频数据流,内存泄漏、CPU飙高、解析卡顿接踵而至,这时候… · 2026/9/23 11:11:10
权利的游戏第一季迅雷手写实现:3个完整示例搞定项目 权利的游戏第一季迅雷手写实现:3个完整示例搞定项目 看了一堆教程还是不会写项目?别急,问题不在你笨,在于没人给你看 完整示例 。 我见过太多学员,理论背得滚瓜烂熟,一动手就抓瞎。今天这篇,不整虚的,直接上干货。… · 2026/9/23 11:11:03
签到图标避坑指南:拆解前端状态同步核心逻辑 签到图标避坑指南:拆解前端状态同步核心逻辑 版本升级后 API 全变了?别慌,很多开发者在重构老旧项目时,最头疼的不是业务逻辑,而是那些看似简单却暗藏玄机的 UI 状态同步问题。尤其是 签到图标… · 2026/9/23 11:11:03
3步搞定爱普生l383图解原理,拒绝配置卡半天 3步搞定爱普生l383图解原理,拒绝配置卡半天 配置环境就卡半天?爱普生l383驱动装不上,打印测试页全黑,这时候别急着砸打印机。很多开发者在处理打印驱动底层逻辑或嵌入式控制时,往往被“黑盒”状态劝退。今天不聊虚的,直接上 图解原理… · 2026/9/23 11:10:56
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29