Heim  >  Artikel  >  Java  >  Wie wird der Hash-Code eines Objekts in Java generiert?

Wie wird der Hash-Code eines Objekts in Java generiert?

PHPz
PHPzOriginal
2024-04-11 18:45:01971Durchsuche

Der Hash-Code eines Java-Objekts wird durch die folgende Formel generiert: h = (h

Wie wird der Hash-Code eines Objekts in Java generiert?

Wie wird der Hash-Code eines Objekts in Java generiert?

Hash-Code ist ein int-Wert, der in einem Java-Objekt gespeichert wird und dazu dient, das Objekt schnell zu identifizieren und zu finden. Es wird durch die folgende Formel generiert:

hashCode = (h << 5) - h + x

wobei:

  • h das Ergebnis des vorherigen Hash-Codes ist, der um 5 Bits nach links verschoben und mit dem ursprünglichen Hash-Code summiert wurde (der Anfangswert ist 0)
  • x ist das Objekt Der Hash-Code des Eigenschaftswerts oder Zeigers

Bei primitiven Typen wird der Hash-Code direkt im Objekt gespeichert, wie zum Beispiel:

int i = 10;
System.out.println(i.hashCode()); // 输出:10

Bei Referenztypen wird der Hash-Code basierend auf dem Hash-Code generiert Liste seines Objekts, wobei:

hashCode = (hashcode1 * 31) + (hashcode2 * 31) + ... + (hashcodeN * 31)

31 eine Primzahl ist, die sogenannte „magische Zahl“, die hilft, Hash-Kollisionen zu reduzieren.

Praktischer Fall

Betrachten Sie die folgende Person-Klasse: Person 类:

class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public int hashCode() {
        int hash = 0;
        if (name != null) {
            hash += name.hashCode() * 31;
        }
        hash += age * 31;
        return hash;
    }
}

此类覆盖了 hashCode() 方法以生成定制的哈希码,根据 nameage 属性哈希码计算。

Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);

System.out.println(p1.hashCode() == p2.hashCode()); // 输出:true

在上面的案例中,尽管 p1p2rrreee

Diese Klasse überschreibt die Methode hashCode(), um gemäß Name- und Alter-Attribut-Hashcode-Berechnung. 🎜rrreee🎜Obwohl p1 und p2 im obigen Fall unterschiedliche Objekte sind, sind die Hash-Codes dieselben, da sie dieselben Eigenschaften haben. 🎜

Das obige ist der detaillierte Inhalt vonWie wird der Hash-Code eines Objekts in Java generiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn