先给大家来一个表情图来决定要看的源码. 这里就话不多话了,来到我们不得不看的 HashMap 源码环节了.
我们抽取 HashMap 中我们经常使用到的 put / get 等方法进行阅读分析.
HashMap 结构
// Node 节点的数组transient Node<K,V>[] table;// 长度transient int size;//哈希因子static final float DEFAULT_LOAD_FACTOR = 0.75f;
这里说明主要是存储数据主要是 table.
java.util.HashMap.TreeNode ,这个内部类,大家有兴趣可以自己了解,因为这个就是我们大家所说的 红黑树. 这里我主要是讲述 put / get 方法,以及put 方法的扩容方法.
putVal 方法
这里就直接上 putVal 的代码,由于是上代码看到不是很方便,所以我这里直接贴图出代码了. 如果没看过的人,可能看着这源码,就是一顿头晕。