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 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; } }
此类覆盖了 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
. 🎜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!