介绍下HashMap
题目
介绍一下
HashMap的底层结构和基本原理。
参考答案
JDK8 里的 HashMap 是数组 + 链表 + 红黑树结构。元素先通过 hash 定位到桶位,发生冲突时先挂链表;当链表长度超过阈值且数组容量足够时,会树化成红黑树。
常见面试点:
- 默认初始容量 16
- 默认负载因子 0.75
- 扩容通常翻倍
- 查询平均时间复杂度接近 O(1)
它本身不是线程安全的,所以并发场景不能直接使用。
回答展开
- 集合题最好从数据结构、访问流程和并发行为三个角度回答。
- 如果是并发容器,要把线程安全的实现方式说清楚,而不是只说能并发用。
- 最后落到真实选择:单线程普通容器,并发场景选并发容器或避免共享。
实际场景
比如本地缓存用户信息、配置项、权限映射时,单线程构建可用 HashMap,并发读写场景则更适合 ConcurrentHashMap。