在 Java 中,hashCode()
方法是一個對象的原生方法,用于返回一個整數散列值,該值主要用于在散列表、哈希集合和哈希映射數據結構中. 默認情況下,hashCode()
方法是由 java.lang.Object
類實現的,Java 對象默認的哈希碼一般是基于對象的內存地址計算的
對于一個特定的 Java 類,為了保證良好的性能,重寫 hashCode()
方法時,需要遵循以下規則:
hashCode()
必須始終返回相同的值,除非對象被修改。equals()
方法判斷),那么它們的 hashCode()
調用應該返回相同的值。hashCode()
返回的值不一定要是不同的。然而,產生不同的哈希碼對于提高哈希表性能是有幫助的。下面是一個簡單的 hashCode()
方法實現示例:
class Person {
private String name;
private int age;
// 構造器、getter、setter 省略
@Override
public int hashCode() {
// 初始化哈希值
int result = 17;
// 使用屬性的哈希碼計算哈希值
result = 31 * result + (name == null ? 0 : name.hashCode());
result = 31 * result + age;
return result;
}
}
在這個例子中,hashCode()
方法首先初始化了一個整數 result
等于 17。然后,它通過分別計算 name
屬性和 age
屬性的哈希值來更新 result
。這里用 31 乘以當前結果,再加上屬性的哈希值。因子 31 的選擇是因為它是一個質數,可以降低哈希碰撞的可能性。最后,方法返回這個哈希值。
請注意,在實際生產中,通常使用已有的庫(例如 Lombok 或 Apache Commons Lang)來幫助生成 hashCode() 方法,從而減少編碼負擔和避免錯誤。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。