zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Java进阶:【集合】HashMap原理简单理解

2023-03-20 14:53:31 时间

HashMap原理简单理解

HashMap重要属性:

hashMap构造器:

put方法:

新增方法中的hashCode算法:

计算位置的方法和entry对象:

经典面试题:

装填因子,负载因子,加载因子 为什么是0.75

装填因子设置为1:空间利用率得到了很大的满足,但是很容易碰撞,产生链表,查询效率边低

装填因子:0.5:碰撞几率低,扩容,产生链表几率低,查询快

于是HashMap做了个折中

主数组的长度为什么是2^n

原因1:

数组长度影响位置,H&length-1等效,等效的前提就是length必须是2的整数倍,

原因2:

防止哈希冲突,位置冲突

验证整数倍:

验证非正数倍

非整数倍,位置一样,会产生链表,导致效率变低