您的位置:首页 > 其它

Hashmap的内部机制

2016-04-14 12:58 218 查看
1.Hashmap是数据结构中哈希表的实现,可以把它看成是一个线性数组Entry[],每一个数组元素中存储的都是一个链表的头结点,Hashmap中的内容都放在数组中,数组的默认长度为16,每个数组元素都有key,value,next三个属性

2.每当调用Hashmap的put()方法的时候:

int hash=hash(key.hashcode());

int index=hash%Entry.length;

Entry[index]=value;

3.当调用Hashmap的get()方法时,先定位到数组元素再遍历该元素处的链表。

4.若两个不同的对象具有相同的hashcode值,这种现象叫做冲突。

解决冲突的方式有三种:(1)开放地址法,也叫再散列法,分为线性探测再散列,二次探测再散列,伪随机探测再散列

(2)再哈希法,通过构造多个不同的哈希函数

(3)链地址法 (Hashmap采用的方法)

4.rehash

这边提到两个参数,一个是“初始容量”,默认为16,一个是“加载因子”,默认为0.75,将它们相乘得到一个阈值,当Hashmap的大小到达阈值时,就需要扩容,这个时候就要进行rehash操作,rehash操作是非常耗时的,应该尽量避免
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: