Le code de hachage d'un objet Java est généré par la formule suivante : h = (h
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
où :
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
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)
31 est un nombre premier, appelé « nombre magique », qui permet de réduire les collisions de hachage.
Cas pratique
Considérons la classePerson
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; } }
此类覆盖了hashCode()
方法以生成定制的哈希码,根据name
和age
属性哈希码计算。
Person p1 = new Person("John", 25); Person p2 = new Person("John", 25); System.out.println(p1.hashCode() == p2.hashCode()); // 输出:true
在上面的案例中,尽管p1
和p2
rrreee
hashCode()
pour générer un code de hachage personnalisé, selon
Calcul du code de hachage des attributs Nom
et
age
. rrreeeDans 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!