hash code的疑問

"不同物件之hash code的值也可能一樣"

想請問一下這個選項怎麼會對呢??

C. The hashCode method for a given class can be used to test for object inequality, but NOT object equality for that class.

對hash code實在很不懂,希望好心人士可以教我一下QQ

已更新項目:

因為不相同的物件一定不會有相同的雜湊碼

可是不同物件之hash code的值也可能一樣...

這樣判斷物件是不是不一樣也可能出錯呀...

3 個解答

評分
  • ?
    Lv 7
    1 0 年前
    最佳解答

    "不同物件之hash code的值也可能一樣",因此不能拿hash code來比較兩個物件是否相同(NOT object equality for that class);但是,反過來說,如果兩個物件的hash code如果不一樣,則兩個物件絕對不同,因此可以拿hash code來比較兩個物件是否相異(an be used to test for object inequality)。

  • 1 0 年前

    一般來說,不同的物件應該會有不同的雜湊碼(hashCode),但是也有可能會有相同的雜湊碼(機率非常小),而如果兩個物件在equals()的結果為相同的情況之下,則該兩個物件就會有相同的雜湊碼;因此我們只可以用hashCode()方法來判斷兩個物件是否不同(因為不相同的物件一定不會有相同的雜湊碼),而不能判斷兩個物件是否相同(就如你在問題中提到的:"不同物件之hash code的值也可能一樣")。

    參考資料: Zodiac
  • 1 0 年前

    沒錯啊~ hash 會有 Collision 的狀況出現~

    用最笨的方向想~ 一大筆資料怎麼可以只用固定長度的資料來表示每一筆資料的不同~

    好像特徵一般~戀會有特徵一樣,但實際上不同的資料~

    忘了hash 是在資料結構還是密碼學會有介紹演算法~看了你便知~

    而且hash 又不是拿來作唯一識別用~

    2008-08-17 21:53:35 補充:

    不相同的物件可能會有相同的雜湊碼~

    所以不會用雜湊碼來判斷來源資料為何~都是用來判斷來源資料是否符合~

還有問題?馬上發問,尋求解答。