有點搞不懂這兩個方法的意思,特別是hashcode方法里面的一些引數,請大佬們多點一下。。。


uj5u.com熱心網友回復:
hashcode方法就是在原有的基礎上加了31重寫equals方法主要是根據書名判斷兩個書物件是否相等
uj5u.com熱心網友回復:
hashCode函式,就是一個散列函式,或者說是特征函式。使用一個int型別的資料來代表整個物件的特征(特征性),并且,要求這個int型別資料,盡量能夠對不同的物件回傳不同的值(分散特性)。
樓主的這個樣例代碼,不太典型啊,最起碼,沒有考慮到money屬性。當然,有些程式的場景要求忽略某些屬性也是可以理解的。
至于為什么有個31,個人覺得并沒有什么卵用。看代碼的意思應該是想讓演算法更具有分散特性吧,但是,這樣寫貌似達不到這個目的。
不明白 hashCode 和 equals 兩個函式啊 ?
推薦樓主看一下 HashMap 的資料結構(特別注意資料存盤程序和讀取程序)。
簡單來講可以這么說,hashCode 函式可以加速定位(或者查找)所屬物件的速度;equals 函式可以精確定位(或者查找)所屬物件是否存在。
HashSet 里面的物件不是永遠不會重復嗎?
那么,在向 HashSet 里面放入物件的時候,是不是要先看看里面是否已經存在相同的物件了?
怎樣判斷是否已經存在相同的物件呢,就是拿 待放入的物件 和 HashSet 里面的所有物件進行比較即可。
hashCode 在這個程序中起到什么作用呢?就是通過int的值可以忽略一些沒必要進行比較的物件,加速查找程序。
equals 在這個程序中起什么作用呢?就是完成物件的比較程序而已,最終以這個函式的回傳值為準。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/229503.html
標籤:Java EE
上一篇:docker build 報錯。求大神幫助,急急急!
下一篇:查查世界上最神奇的數
