HashMap扩容机制与Rehash原理图解.pdfVIP

  • 0
  • 0
  • 约小于1千字
  • 约 1页
  • 2026-09-21 发布于北京
  • 举报

我跟大家说一下,hashmap底层是基于数组来实现的的数据结构,如果是用数组的话,

就天然会有一个问题,就跟ArrayList一样,就是数组如果满了,就必须要扩容,hashmap所

以也是有扩容的问题存在的

这一讲我们先不看源码,先来画图说一下hashmap扩容的原理

非常简单,2倍扩容+rehash,每个key-value对,都会基于key的hash值重新寻址找到新

数组的新的位置

本来那个数组的长度假设是16,现在的话新数组的长度是32

本来所有的key的hash,对16取模是一个位置,比如说是index=5;但是如果对32取模,

可能就是index=11,,位置可能变化

问你,hashmap扩容的原理,数组,一次扩容多大,2倍,rehash过程,基于key的hash值

重新在新的数组里找到新的位置,很多key在新数组的位置都不一样了,如果是之前的

这个key可能就会在新的数组里分布在不同的位置上了

这个原理大体上是JDK1.7以前的原理,现在的话呢,JDK1.8以后,都是数组大小是2的n

次方扩容,用的是与操作符来实现hash寻址的算法,来进行扩容的时候,rehash

文档评论(0)

1亿VIP精品文档

相关文档