W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
哈希碼是一個整數(shù)值。計算整數(shù)的算法稱為散列函數(shù)。
Java使用散列碼從基于散列的集合中有效地檢索數(shù)據(jù)。
Object類有一個返回int的hashCode()方法,它是對象的哈希碼。
該方法的默認(rèn)實現(xiàn)通過將對象的內(nèi)存地址轉(zhuǎn)換為整數(shù)來計算對象的哈希碼。
下面是我們在類中重寫hashCode()方法時必須遵循的規(guī)則。
假設(shè)有兩個對象引用,x和y。
如果x.equals(y)返回true,x.hashCode()必須返回一個整數(shù),它等于y.hashCode()。
如果兩個對象使用equals()方法相等,則它們必須具有相同的哈希碼。
如果x.hashCode()等于y.hashCode(),則x.equals(y)不必返回true。
如果對同一個對象多次調(diào)用hashCode()方法,則該方法必須返回相同的整數(shù)值。
如果一個類覆蓋這兩個方法中的任何一個,它必須覆蓋該類的對象在基于散列的集合中正確工作。
Java 7添加了一個實用程序類java.lang.Objects。它包含一個hash()方法,用于計算任意數(shù)量值的哈希碼。
從java 7,使用Objects.hash()方法來計算對象的哈希碼。
以下代碼顯示如何計算哈希值。
class Book { private String title; private String author; public int hashCode() { int hash = 37; int code = 0; // Use title code = (title == null ? 0 : title.hashCode()); hash = hash * 59 + code; // Use author code = (author == null ? 0 : author.hashCode()); hash = hash * 59 + code; return hash; } }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: