HashMap的扩容机制

简介: HashMap的扩容机制
  1. 在jdk1.8中,resize方法是在hashmap中的键值对大于阀值(0.75)时或者初始化时,就调用resize方法进 行扩容;
  2. 每次扩展的时候,都是扩展2倍;
  3. 扩展后Node对象的位置要么在原位置,要么移动到原偏移量两倍的位置。

在putVal()中,我们看到在这个函数里面使用到了2次resize()方法,resize()方法表示的在进行第一 次初始化时会对其进行扩容,或者当该数组的实际大小大于其临界值值(第一次为12) , 这个时候在扩 容的同时也会伴随的桶上面的元素进行重新分发,这也是JDK1.8版本的一个优化的地方,在1.7 中,扩容之后需要重新去计算其Hash值,根据Hash值对其进行分发,但在1.8版本中,则是根据 在同一个桶的位置中进行判断(e.hash & oldCap)是否为0,重新进行hash分配后,该元素的位置 要么停留在原始位置,要么移动到原始位置+增加的数组大小这个位置上

相关文章
|
3月前
|
存储 Java
HashMap扩容机制详解
HashMap扩容机制详解
|
3月前
|
存储 安全 算法
【JAVA】HashMap扩容性能影响及优化策略
【JAVA】HashMap扩容性能影响及优化策略
|
2月前
|
存储 安全 Java
深入解析Java HashMap的高性能扩容机制与树化优化
深入解析Java HashMap的高性能扩容机制与树化优化
56 1
|
2月前
|
索引
HashMap扩容为什么每次都是之前的2倍
HashMap扩容为什么每次都是之前的2倍
31 0
|
3月前
|
Java 索引
HashMap的扩容看这一篇足够
HashMap的扩容看这一篇足够
65 2
|
3月前
HashMap和ArrayList初始大小和扩容后的大小
HashMap和ArrayList初始大小和扩容后的大小
|
3月前
HashMap默认大小和扩容后的大小
HashMap默认大小和扩容后的大小
|
3月前
|
存储 Java Serverless
谈谈我对HashMap扩容机制的理解及底层实现
谈谈我对HashMap扩容机制的理解及底层实现
|
3月前
|
存储 算法 Java
深入剖析HashMap:理解Hash、底层实现与扩容机制
深入剖析HashMap:理解Hash、底层实现与扩容机制
542 1