本篇是集合框架的下半部分,聚焦 Map 家族。先用一张全景对比表厘清 HashMap、LinkedHashMap、TreeMap、Hashtable、ConcurrentHashMap、IdentityHashMap、WeakHashMap、EnumMap 的语义差异与适用场景,并实战 Map 接口的默认方法。随后从哈希函数、冲突解决、装载因子讲到"数组+链表+红黑树"三段式结构的必然性,证明容量取 2 的幂时 (n-1)&hash 与取模的数学等价性。核心部分逐段精读 JDK 8 HashMap 源码:hash() 扰动、tableSizeFor、putVal、resize 高低位拆分、tr
本文从 Collection 与 Map 两条体系出发,画出集合框架的接口继承树,讲清 List/Set/Queue/Deque 的语义边界与 AbstractXXX 骨架类的价值;深入 ArrayList 源码拆解延迟初始化、1.5 倍扩容、Arrays.copyOf 与 transient elementData 的自定义序列化;用 modCount 与 expectedModCount 解释 fail-fast 与 ConcurrentModificationException 的成因,并给出四种正确删除元素的姿势;对比 HashSet、TreeSet、LinkedHashSet 的底层
从集合框架全景图出发,深入剖析 ArrayList 动态扩容与 fail-fast 机制、LinkedList 双向链表设计,重点拆解 HashMap 的哈希扰动、2 的幂容量、链表树化、高低位扩容与 JDK7/8 实现差异,讲透 LinkedHashMap 实现 LRU 缓存的原理,最后给出集合选型对比表与高频避坑清单,是 Java 集合源码面试与实战的完整攻略。