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

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

PHPz
Freigeben: 2024-04-11 18:45:01
Original
1005 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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

hashCode = (hashcode1 * 31) + (hashcode2 * 31) + ... + (hashcodeN * 31)
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

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

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

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

在上面的案例中,尽管 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage