HashMap 核心源码分析 (jdk8)
3 月,跳不动了?>>> 写在前面 如果对 HashMap 的基本工作原理不清楚,继续阅读后续内容的效果不是很好,建议先学习前置知识HashMap 基本工作原理 : https://my.oschina.net/j4love/blog/1797058 java.util.HashMap#putVal final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; // table 为 null 说明是首次调用 put 方法 , 进行 resize 操作真正为 table 分配存储空间 if ((tab = table) == null || (n = tab.length) == 0) n = (tab = resize()).length; // i = (n - 1) & hash 计算出的值判断 table[i] 是否为 null , // 如果为 null 就为 key , value 创建一个新的 Node 节点 , // 不需要进行碰撞检测直接存储在 table 中 i 的位置上 if ((p = tab[i = (n - 1) & hash]) == null) tab[i] = newNode