Re: [問題] 一題SCJP的題目,有關equals()&hashcod()

看板java作者 (花生)時間12年前 (2011/12/07 13:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
我不是高手, 我覺得可以參考一下良葛格筆記《Object 類別》這篇: http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/ObjectClass.htm 以下是上面網址的節錄: Object的toString()方法預設會傳回以下的字串: getClass().getName() + '@' + Integer.toHexString(hashCode()); API中對於equals()的合約是必須具備反身性(Reflexive)、對稱性(Symmetric)、傳 遞性(Transitive)、一致性(Consistent)。 反身性(Reflexive):x.equals(x)的結果要是true。 對稱性(Symmetric):x.equals(y)與y.equals(x)的結果必須相同。 傳遞性(Transitive):x.equals(y)、y.equals(z)的結果都是true,則 x.equals(z)的結果也必須是true。 一致性(Consistent):同一個執行期間,對x.equals(y)的多次呼叫,結果必須相 同。 可以參考API文件中Object類別的hashCode()之建議: 在同一個應用程式執行期間,對同一物件呼叫 hashCode()方法,必須回傳相同的 整數結果。 如果兩個物件使用equals(Object)測試結果為相等, 則這兩個物件呼叫hashCode()時 ,必須獲得相同的整數結果。 如果兩個物件使用equals(Object)測試結果為不相等, 則這兩個物件呼叫hashCode() 時,可以獲得不同的整數結果。 兩個不同的物件,可以傳回相同的hashCode()結果,這是合法甚至適當的,只是物件會被 丟到同一個雜湊桶中。 黃色是上一篇版友講的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.69.9
文章代碼(AID): #1EtlXz18 (java)
文章代碼(AID): #1EtlXz18 (java)