hashcode

1. hashcode 的特性算法

                a. hashcode 主要用于查找的快捷性。hashcode 常常用于肯定对象的存储地址。如 hashmap、hashtable 。spa

                b. 对象的 equals 方法被重写,hashcode 方法也要被重写。code

                c. 两个对象的hashcode 相同,两个对象不必定相同,只能说这两个对象存储在一个散列结构中。对象

 

2. hashcode 的做用。hash

Java 集合中,有序但元素不可重复的 list,无序但元素能够重复的 set 。如何判断 set 集合里,添加一个新元素,元素不会重复?table

equals 方法能够,可是很麻烦,例如 1000 个元素在 set 集合,添加一个元素,使用 equals 方法判断1000次,会大大下降效率。因而 Java 使用了哈希算法,将数据按照特定算法,直接指定到某一个地址上。当 set 集合中添加新元素时,先调用该元素的hashcode 方法,一直定位到应在的地址上。效率

                a. 若是该位置没有元素,直接存储到该位置,不用比较。hashmap

                b. 若是该位置有元素,调用 equals 方法,与新元素比较,若是相同,就不存储。若是不一样,也就是产生了 hash key 冲突状况,那么在这个 hash key 上产生一个链表。将全部产生相同 hashcode 的对象放在链表上。这样一来,调用 equals 方法的次数就大大下降了。object

 

3. 实际做用map

从 object 角度来看,JVM 每 new 一个 object ,就会将 object 放到哈希表中去,若是下面要作 object 比较或者取这个对象,就先调用该对象的 hashcode ,再从哈希表中去取这个对象,若是 hashcode 相同再调用 equals 方法。做用是提升了查询效率

相关文章
相关标签/搜索