文章列表

HashMap 的 hash 方法是如何实现的?

本文深入解析Java HashMap中hash()方法的实现原理,详细解读JDK8中通过(h = key.hashCode()) ^ (h >>> 16)进行哈希扰动的设计思想,分析如何通过位运算减少哈希冲突,并对比JDK7与JDK8的不同实现,是理解HashMap高效性的关键知识点。


犬小哈2026/1/23Java面试八股文

HashMap 在 get 和 put 时,底层流程是怎样的?

本文深入源码,完整解析Java HashMap中get与put操作的底层执行流程。从哈希扰动、桶定位、链表/红黑树的查找与插入,到触发树化与扩容的临界条件,详细剖析每个步骤的机制与设计意图,帮助你彻底理解HashMap的高性能原理。


犬小哈2026/1/22Java面试八股文

HashMap 的 remove 方法是如何实现的?

本文深入源码解析Java HashMap中remove方法的完整实现机制,详细阐述其如何通过哈希定位、在链表或红黑树中查找并删除节点,以及删除后可能触发的树退化(Untreeify)过程。涵盖removeNode核心逻辑、返回值语义及并发注意事项,是理解HashMap内部运作原理的关键篇章。


犬小哈2026/1/22Java面试八股文

HashMap 用在并发场景中会出现什么问题?

深入剖析HashMap在并发场景下导致数据丢失、覆盖及JDK7中死循环问题的根本原因。本文从源码层面解析其线程不安全的原理,对比JDK8的改进与遗留问题,并明确指出在高并发环境下应使用ConcurrentHashMap等线程安全容器的正确实践。


犬小哈2026/1/22Java面试八股文

为什么在 Jdk 8 中 HashMap 要转成红黑树?

本文深入解析JDK8中HashMap引入红黑树机制的根本原因,详细阐述其如何将最坏情况下O(n)的链表查询优化为O(log n)。内容涵盖树化阈值(TREEIFY_THRESHOLD=8)的统计学依据、红黑树相较于AVL树的工程权衡,以及如何有效防止哈希碰撞导致的性能劣化,是理解HashMap高性能设计的关键。


犬小哈2026/1/22Java面试八股文

为什么 HashMap 的默认负载因子要设置成 0.75?

本文深度解析Java HashMap将默认负载因子设置为0.75的根本原因,从时间与空间成本权衡的工程哲学出发,结合泊松分布等统计学原理,阐明这一数值如何在控制哈希冲突与提升空间利用率之间取得最佳平衡,并探讨实际开发中的调优建议。


犬小哈2026/1/22Java面试八股文

说说 HashMap 的扩容机制?如何扩容的?

本文深度解析Java HashMap的扩容(resize)机制,详细说明触发条件(容量*负载因子)、2倍扩容过程及JDK8的高低位数链表拆分优化。深入探讨初始容量与负载因子的影响,并提供预估容量等性能调优实践,是理解HashMap核心原理与应对高难度面试的关键。


犬小哈2026/1/21Java面试八股文