天天看點

HashCode相關

轉帖,還是轉帖

哈希碼産生的依據:哈希碼并不是完全唯一的,它是一種算法,讓同一個類的對象按照自己不同的特征盡量的有不同的哈希碼,但不表示不同的對象哈希碼完全不同。也有相同的情況,看程式員如何寫哈希碼的算法。

  下面給出幾個常用的哈希碼的算法。

  1:object類的hashcode.傳回對象的記憶體位址經過處理後的結構,由于每個對象的記憶體位址都不一樣,是以哈希碼也不一樣。

  2:string類的hashcode.根據string類包含的字元串的内容,根據一種特殊算法傳回哈希碼,隻要字元串内容相同,傳回的哈希碼也相同。

  3:integer類,傳回的哈希碼就是integer對象裡所包含的那個整數的數值,例如integer i1=new integer(100),i1.hashcode的值就是100 。由此可見,2個一樣大小的integer對象,傳回的哈希碼也一樣。

類 hashmap<k,v>

<dl></dl>

<dt></dt>

<dt>類型參數:</dt>

<dd></dd>

<code>k</code> - 此映射所維護的鍵的類型

<code>v</code> - 所映射值的類型

<dd> </dd>

<dd>基于哈希表的 map 接口的實作。此實作提供所有可選的映射操作,并允許使用 null 值和null 鍵。(除了非同步和允許使用 null 之外,hashmap 類與 hashtable 大緻相同。)此類不保證映射的順序,特别是它不保證該順序恒久不變。</dd>

輸出如下:

HashCode相關

       由上述例子可見:隻重寫了equasl方法的key類 在用做hash中的鍵值的時候 兩個equasl為true的對象不能擷取相應 的value的而重寫了hashcode方法和equals方法的key_類 兩個相等的對象 可以擷取同一個value的,這樣更符合生活中 的邏輯hashmap對象是根據key的hashcode來擷取對應的vlaue

因而兩個hashcode相同的對象可以擷取同一個value

繼續閱讀