《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
当我们首次调用 HashMap
的 put()
方法存数据时,如果发现 table
为 null
,则会调用 resize()
去初始化 table
,具体逻辑在 putVal()
方法中。
在 resize()
方法中,调整了最终 threshold
值,以及完成了 table
的初始化。
因为 resize()
还糅合了动态扩容的逻辑,所以我将初始化 table
的逻辑用注释标记出来了。其中 xxxCap
和 xxxThr
分别对应了 table
的容量
和动态扩容
的阈值
,所以存在旧
和新
两组数据。
当我们指定了初