Maison > Java > javaDidacticiel > le corps du texte

Comment est généré le code de hachage d'un objet en Java ?

PHPz
Libérer: 2024-04-11 18:45:01
original
962 Les gens l'ont consulté

Le code de hachage d'un objet Java est généré par la formule suivante : h = (h

Comment est généré le code de hachage dun objet en Java ?

Comment le code de hachage d'un objet est-il généré en Java ?

Le code de hachage est une valeur int stockée dans un objet Java et est utilisé pour identifier et trouver rapidement l'objet. Il est généré par la formule suivante :

hashCode = (h << 5) - h + x
Copier après la connexion

où :

  • h est le résultat du code de hachage précédent décalé de 5 bits et sommé avec le code de hachage d'origine (la valeur initiale est 0)
  • x est l'objet Le code de hachage de la valeur ou du pointeur de la propriété

Pour les types primitifs, le code de hachage est stocké directement dans l'objet, tel que :

int i = 10;
System.out.println(i.hashCode()); // 输出:10
Copier après la connexion

Pour les types de référence, le code de hachage est généré en fonction du code de hachage liste de son objet, où :

hashCode = (hashcode1 * 31) + (hashcode2 * 31) + ... + (hashcodeN * 31)
Copier après la connexion

31 est un nombre premier, appelé « nombre magique », qui permet de réduire les collisions de hachage.

Cas pratique

Considérons la classe Person suivante : 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;
    }
}
Copier après la connexion

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

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

System.out.println(p1.hashCode() == p2.hashCode()); // 输出:true
Copier après la connexion

在上面的案例中,尽管 p1p2rrreee

Cette classe remplace la méthode hashCode() pour générer un code de hachage personnalisé, selon Calcul du code de hachage des attributs Nom et age. 🎜rrreee🎜Dans le cas ci-dessus, bien que p1 et p2 soient des objets différents, les codes de hachage sont les mêmes puisqu'ils ont les mêmes propriétés. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!