HashMap的实现

来源:互联网 发布:相机判断年龄算法 编辑:程序博客网 时间:2024/06/06 12:33

1. HashMap的数据结构:HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

HashMap数据结构

图片来自:http://www.iteye.com/topic/539465

2. HashMap中元素的存取:
往hashmap中put元素的时候,先根据key的hash值得到这个元素在数组中的位置(即下标),然后就可以把这个元素放到对应的位置中了。如果这个元素所在的位子上已经存放有其他元素了,那么在同一个位子上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在链尾。从hashmap中get元素时,首先计算key的hashcode,找到数组中对应位置的某一元素,然后通过key的equals方法在对应位置的链表中找到需要的元素。

3.注意:

    重写equals方法要同时重写hashCode方法。    按照散列函数的定义,如果两个对象相同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同。    如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希表的操作。
0 0
原创粉丝点击