首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
常用数据结构
南北是北北
创建于2025-10-10
订阅专栏
数据结构浅析
等 1 人订阅
共9篇文章
创建于2025-10-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
list并发与共享
1) 并发 + 共享的本质风险 数据竞争:多个线程同时读写同一 List,没有happens-before 关系 → 读到旧值/中间态。 复合操作非原子:if (!list.contains(x))
List视图与不可变
1) 先分清三层概念 视图(view) :不拷贝数据、共享底层存储 的“窗口”。对视图或其“父集合”的结构性修改会彼此可见,并受 fail-fast 影响(易抛 ConcurrentModificat
List排序/查找最佳实践
一、核心结论(先记住这 10 条) 默认排序用稳定算法:List.sort / Collections.sort / Kotlin list.sortWith {} → 底层 TimSort(稳定,适
list的迭代安全与 fail-fast
1. 名词与本质 迭代安全(iteration safety) :在遍历期间,容器的结构是否允许被修改,以及在多线程读写时,遍历能否保持一致的语义(不崩不乱)。 fail-fast 迭代器:当检测到“
几种list的复杂度 & 内存 & 扩容
一、复杂度 × 内存 × 扩容总表(n 为元素个数) 容器 get(i)/set(i) 末尾 add/remove 头部 add/remove 中间插入/删除(已知索引) contains/遍历 额外
HashMap树化:桶内≥8 且容量≥64 → 红黑树;≤6 退回链表
1) 什么时候“桶”会从链表变红黑树? 三个常量(JDK 8 源码同名): TREEIFY_THRESHOLD = 8:桶内元素数 ≥ 8 才考虑树化。 UNTREEIFY_THRESHOLD = 6
HashMap扩容:翻倍 + 低/高位链分裂(O(n))
1) 什么时候扩容? 记 capacity 为表长(始终 2 的幂),size 为键值对数,loadFactor 默认 0.75。 阈值:threshold = capacity * loadFact
负载因子 0.75 与阈值 threshold = capacity * loadFactor
1) 负载因子到底是什么 记 capacity 为散列表数组长度(始终是 2 的幂),size 为已存键值对数量。 负载因子 loadFactor 表示允许的装载密度:当 size > thresho
HashMap扰动 hash、索引:index = spread & (n-1);容量始终 2 的幂
1) 扰动(spread):为什么要“再搅一遍”? HashMap 取桶位只看 低位(见 §2),若某些 hashCode() 高位离散、低位很烂,就会集中落某些桶。 JDK 8 的做法是把 高 16