数据结构之HashMap

一、HashMap

  • HashMap底层是通过数组+链表实现的,KV都可以为NULL,线程不安全;
  • 初始size为16,扩容:newsize = oldsize * 2,size一般为2的n次幂;
  • HashMap扩容针对整个Map,每次扩容后,需要对数组中的元素重新计算位置,再重新插入;
  • HashMap都是先扩容再判断是否需要扩容,所以会有无效扩容(无效扩容就是扩容后再不插入数据的扩容就叫无效扩容);
  • HashMap容量大于75%时就会触发扩容;
  • 计算index的方法:index = (hash & 0x7FFFFFFF) % tab.length;

  数组中存储链表对应的Entry Node,Node中存储着key和value。Entry Node在数据的位置是通过key的hashcode按公式计算的数组的下标位置。

原文地址:https://www.cnblogs.com/naray/p/15410026.html