HashMap原理简单理解
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WUVTYdKh-1637925087608)(javaSE.assets/image-20210705110721853.png)]](https://i-blog.csdnimg.cn/blog_migrate/47598c1390b06a21953001d51fd5353f.png)
HashMap重要属性:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zlniolLu-1637925087611)(javaSE.assets/image-20210705112248059.png)]](https://i-blog.csdnimg.cn/blog_migrate/4adaf55dfb4caac3dab26d00ed4b5624.png)
hashMap构造器:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hw7yNRmj-1637925087611)(javaSE.assets/image-20210705112138322.png)]](https://i-blog.csdnimg.cn/blog_migrate/3340650064fd1f51b399d94175be7494.png)
put方法:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQJSnvbM-1637925087612)(javaSE.assets/image-20210705113415894.png)]](https://i-blog.csdnimg.cn/blog_migrate/9adc336772ad4b8cb8de095e8c4293df.png)
新增方法中的hashCode算法:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KEt9yN44-1637925087613)(javaSE.assets/image-20210705114131059.png)]](https://i-blog.csdnimg.cn/blog_migrate/ef8f2cca0f4c5869094b4887f7e25b54.png)
计算位置的方法和entry对象:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3OzoDeXa-1637925087614)(javaSE.assets/image-20210705114249935.png)]](https://i-blog.csdnimg.cn/blog_migrate/a6055f7827c299737759815b7c5c2a06.png)
经典面试题:
装填因子,负载因子,加载因子 为什么是0.75
装填因子设置为1:空间利用率得到了很大的满足,但是很容易碰撞,产生链表,查询效率边低
装填因子:0.5:碰撞几率低,扩容,产生链表几率低,查询快
于是HashMap做了个折中
主数组的长度为什么是2^n
原因1:
数组长度影响位置,H&length-1等效,等效的前提就是length必须是2的整数倍,
原因2:
防止哈希冲突,位置冲突
验证整数倍:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DuPSjLmY-1637925087615)(javaSE.assets/image-20210705114755598.png)]](https://i-blog.csdnimg.cn/blog_migrate/e48333a8106e7da32f0f09cee525e354.png)
验证非正数倍
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pLA4DDg8-1637925087615)(javaSE.assets/image-20210705114829755.png)]](https://i-blog.csdnimg.cn/blog_migrate/b442bd5014af6bc9885a845447cfd376.png)
非整数倍,位置一样,会产生链表,导致效率变低
1万+



被折叠的 条评论
为什么被折叠?



