HashMap笔记

1、HashMap每一个键值对也叫做Entry。
2、HashMap数组的每一个元素不止是一个Entry对象,也是一个链表的头节点。每一个Entry对象通过Next指针指向它的下一个Entry节点。
3、新来的Entry节点插入链表时,使用的是“头插法”,因为HashMap的发明者认为,后插入的Entry被查找的可能性更大。
4、HashMap的初始长度默认是16,每次自动扩展或手动初始化时,长度必须是2的幂。
5、默认之所以选择16,是为了服务于从key映射到index的hash算法。
6、如何实现一个尽量均匀分布的Hash函数呢?我们通过利用Key的HashCode值来做某种运算。这个运算可以是对长度取模。但取模的效率较低,所以用很高效的位运算。

index =  HashCode(Key) &  (Length - 1) 

7、如果HashMap长度是16,Length-1的结果为15,二进制的1111。Hash算法的index结果,完全取决于Key的Hashcode值的最后几位。只要输入的HashCode本身分布均匀,Hash的结果就是均匀的。
8、如果HashMap长度为10,有些index出现几率会更大,而有些index永远不会出现(比如0111),不够均匀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值