Hashtable

作者: 那谁319 | 来源:发表于2019-06-22 16:47 被阅读0次

实现

  • hashtable采用桶位+链表结构实现。


    image.png
image.png

put操作

image.png
  • 可以看出value为null时,会抛空指针异常,key为null时,调用hashCode()方法也会报空指针异常,key和value不允许为null;
image.png
  • 如果实际大小count大于阀值,需要rehash,调整整个table;
  • 根据索引位置,获取索引元素;
  • 使用新添加的元素作为该索引位置的头节点,老元素作为后继节点。

rehash操作

image.png
  • 扩容大小为原来的2倍+1;
  • 从后往前循环遍历数组元素;
  • 对遍历到的元素节点进行遍历,将指定索引位置i的老元素作为重新hash后的元素的后继节点(即e.next = (Entry<K,V>)newMap[index];),最后将新hash到元素作为索引位置i处的头节点。

get操作

image.png
  • 根据key的hashcode的低31位和数组的长度取余索引元素。

remove操作

image.png

replace操作

image.png

遍历


相关文章

网友评论

      本文标题:Hashtable

      本文链接:https://www.haomeiwen.com/subject/swggxctx.html