序言
读者需要了解HashMap底层存储数据结构 可参考文章
HashMap的put详解
它是把key进行hash,然后存储,如果key是Object,并且没有重写hashcode,那么它将用物理地址进行hash,否则将使用对象值进行hash。
通过这张图我们可以看到put的具体操作。
if ((tab = table) == null || (n = tab.length) == 0)
n = (tab = resize()).length;
//这一步是第一次put时,会创建一个容量为16的数组,再次put就会直接重用
if ((p = tab[i = (n - 1) & hash]) == null)
tab[i] = newNode(hash, key, value, null);
/*这一步的hash是第二张图哈希后的结果,如果