首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

HashMap源码解读(1)

2012-08-26 
HashMap源码解读(一)HashMap源码解读(一)1、HashMap的存储结构2、HashMap的初始化3、元素Hash值获取及通过has

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
最后的结果如下:


未完待续。。。















热点排行