為何要重寫Course下的hashCode()和equals()方法,我這樣理解對不對?
本來HashSet下的contains()方法是比較student.courses下的元素的哈希碼與course2的哈希碼是否一樣,這當然是不一樣的所以返回的是false。而重寫之后,是比較student.courses下的元素的name屬性的哈希碼與course2.name的哈希碼是否一樣,它們是一樣的,所以返回的是true。
這樣理解對么?一直都一知半解的。。。
本來HashSet下的contains()方法是比較student.courses下的元素的哈希碼與course2的哈希碼是否一樣,這當然是不一樣的所以返回的是false。而重寫之后,是比較student.courses下的元素的name屬性的哈希碼與course2.name的哈希碼是否一樣,它們是一樣的,所以返回的是true。
這樣理解對么?一直都一知半解的。。。
2016-01-24
舉報
2016-04-11
你理解了嗎 ?可以給我說說嗎 ? 我不理解對于List與Set而言,都是遍歷一邊,分別與courses2.name進行equals ??
List不需要重寫 ?但是Set就需要重寫?
這是我理解的hashcode與equals ? (hash比較一個域,equals比較域中一個元素.equals為true,hash一定為true;
equals為false,hash不一定為false) ?
在此 contains先比較hash,后比較equals( hash為true,equals不一定為true;hash為false,equals一定為false)?
這是我理解的不知道對不對 ? ? ?
2016-02-11
java自帶的hashCode()和equals()方法定義比較簡單,很多時候不適用我們使用的場合,這兩個方法在哪里重寫都一樣,只要是在這個包下的。你使用contains()方法時候他需要調用者兩個方法,他會優先使用重寫的hashCode()和equals()方法
2016-01-24
這樣理解對的呢???