HashMap源码解读(一)
HashMap源码解读(一)
1、HashMap的存储结构
2、HashMap的初始化
3、元素Hash值获取及通过hash值找到talbe下标索引
4、元素添加方法addEntry
5、HashMap扩容
6、老table重新hash成新table
7、key为null,存到哪去了
8、查找元素get(Object key)
9、根据key删除元素
1、HashMap的存储结构
在HashMap的Field中有:
2、HashMap的初始化
5、HashMap扩容
2、e.next = newTable[i];

即这里的e就是Entry[j],也就是

3、newTable[i] = e;
因为newTable[i]本身是一个指向浅蓝色Entry[i]的引用,这个时候,我们在将这个引用指向红色Entry[j],这样就完成了老table中一个元素的重新hash到新table中。

7、key为null,存到哪去了
在put方法里头,其实第一行就处理了key=null的情况。
步骤1、初始情况
Entry<K,V> prev = table[i];
Entry<K,V> e = prev;

步骤2、没找到
Entry<K,V> next = e.next;
……..
prev = e;
e = next;
如果e这个元素不是要删除的话,则遍历下一个元素。

步骤3、找到
prev.next = next;
return e;
将prev的下一个元素指向e.next。这样就相当于删除了e
最后的结果如下:

未完待续。。。