Skip to content

介绍下HashMap ​

题目 ​

介绍一下 HashMap 的底层结构和基本原理。

参考答案 ​

JDK8 里的 HashMap 是数组 + 链表 + 红黑树结构。元素先通过 hash 定位到桶位,发生冲突时先挂链表;当链表长度超过阈值且数组容量足够时,会树化成红黑树。

常见面试点:

  • 默认初始容量 16
  • 默认负载因子 0.75
  • 扩容通常翻倍
  • 查询平均时间复杂度接近 O(1)

它本身不是线程安全的,所以并发场景不能直接使用。

回答展开 ​

  • 集合题最好从数据结构、访问流程和并发行为三个角度回答。
  • 如果是并发容器,要把线程安全的实现方式说清楚,而不是只说能并发用。
  • 最后落到真实选择:单线程普通容器,并发场景选并发容器或避免共享。

实际场景 ​

比如本地缓存用户信息、配置项、权限映射时,单线程构建可用 HashMap,并发读写场景则更适合 ConcurrentHashMap。

努力工作 享受生活