Hash code

hash code是一種編碼方式,在Java中,每個對象都會有一個hashcode,Java可以通過這個hashcode來識別一個對象。至於hashcode的具體編碼方式,比較複雜(事實上這個編碼是可以由程式設計師通過繼承和接口的實現重寫的),可以參考數據結構書籍。而hashtable等結構,就是通過這個哈希實現快速查找鍵對象。這是他們的內部聯繫,但一般編程時無需了解這些,只要知道hashtable實現了一種無順序的元素排列就可以了。.

兩個對象值相同(x.equals(y) == true),不一定相等。

基本介紹

  • 外文名:Hash code
  • 類型:編碼方式
  • 定義:對象相等則hashCode一定相等
  • 通過:hashcode來識別一個對象
概念,擴展,

概念

因為:Hash,一般翻譯做“散列”,也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射, pre-maping),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。

擴展

以下是java語言的定義:
1) 對象相等則hashCode一定相等;
2) hashCode相等對象未必相等。
這也涉及到如何寫自定義的hashCode方法的問題:必須符合以上條件。注意條件2中的未必。具體可參見java doc; Effective Java中有更詳細論述。
補充一點個人簡介 hash 就是 類似於數學集合, 每一個鍵,k可以對應一個或多個值,對象就類似於值,所以“相同的對象”具有相同的鍵值,也就是hashCode;

相關詞條

熱門詞條

聯絡我們