重寫之後的方法
/**
* 重寫之後的equals方法和hashcode方法
*/@override
public
boolean
equals
(object o)
@override
public
inthashcode()
因為object的equals方法是兩個物件的引用值得比較,意思就是指向同一位址就相等,否則就相等;如果你需要利用物件裡的值來判斷是否相等,則重寫equal方法
如果不重寫equals方法,則物件呼叫此方法時呼叫的是父類object中的equals方法,比較的是兩個物件的位址值是否相等,如果重寫了equals方法,則先比較位址值,如果位址值不一樣,則進一步比較內容是否相等
hashcode方法得到的雜湊碼和位址值預設是一致的,位址值即為雜湊碼轉為了十六進製制,不重寫hashcode方法,則呼叫的object的hashcode方法,如果重寫了hashcode方法,則會按照重寫的方法計算hash值,重寫後的hashcode方法是將物件的內容按照ascii表找到對應的字元,按照一定計算方式計算出乙個數值
如果物件作為map的key,此時如果同型別的兩個物件的內容相同,需要覆蓋之前的key就需要重寫equals方法和hashcode方法,如果只有在同乙個物件的時候才覆蓋key則不需要重寫equals方法和hashcode方法
為什麼要重寫equals和hashCode方法
當我們 使用hashmap的時候,如果key是我們的自定義型別的話,我們想要的結果是只要物件中所有的屬性的值相等,這樣的物件就是相等的。而預設情況下object下的equals方法比較的是兩個物件在記憶體中的位址是否相同。所以此時我們要重寫equals方法.hashcode 方法是乙個本地方法,他是...
為什麼要重寫toString 方法
tostring 方法是object類裡的方法,所有類都繼承自object,因此所有類都擁有tostring 方法。tostring public string tostring 返回該物件的字串表示。通常,tostring 方法會返回乙個 以文字方式表示 此物件的字串。結果應是乙個簡明但易於讀懂的...
為什麼要重寫hashcode 方法
j a中的集合 collection 有兩類,一類是list,再有一類是set。前者集合內的元素是有序的,元素可以重複 後者元素無序,但元素不可重複。那麼我們怎麼判斷兩個元素是否重複呢?這就是object.equals方法了。通常想查詢乙個集合中是否包含某個物件,就是逐一取出每個元素與要查詢的元素進...