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 方法。做用是提升了查詢效率。