Bonjour Monsieur , j'ai une question concernant la redéfinition de la méthode hashCode qui retourne : abscisse + ordonnée , Dans ce cas les deux Points p1=new point (3,2) p2=new point(2,3) auront le même hashCode, et ne seront pas par la suite ajoutés dans l'ensemble non?
Bonjour, En fait, la méthode hashCode() permet de d'associer un entier (qui n'est pas unique) aux objets dans un HashSet. Donc, les deux objets vont avoir le même hashCode qui est 5. Maintenant, pour décider si l'objet p2 sera ajouté ou pas au HashSet, la JVM (Java Virtual Machine) va chercher tous les points ayant le hashCode 5 (elle va trouver le point (3,2)), puis elle va appliquer la méthode equals() pour comparer chaque point ayant le hashCode 5 au point p2. Du moment que p2.equals(p1) retourne false, donc le point p2 sera également ajouté à l'ensemble. En résumé : (1) le hashCode permet d'éviter d'appliquer la méthode equals() à tous les objets dans le HashSet (2) c'est la méthode equals() qui permet de décider si l'objet existe déjà ou pas dans le HashSet
Bonjour Monsieur , j'ai une question concernant la redéfinition de la méthode hashCode qui retourne : abscisse + ordonnée , Dans ce cas les deux Points
p1=new point (3,2)
p2=new point(2,3)
auront le même hashCode, et ne seront pas par la suite ajoutés dans l'ensemble non?
Bonjour,
En fait, la méthode hashCode() permet de d'associer un entier (qui n'est pas unique) aux objets dans un HashSet. Donc, les deux objets vont avoir le même hashCode qui est 5. Maintenant, pour décider si l'objet p2 sera ajouté ou pas au HashSet, la JVM (Java Virtual Machine) va chercher tous les points ayant le hashCode 5 (elle va trouver le point (3,2)), puis elle va appliquer la méthode equals() pour comparer chaque point ayant le hashCode 5 au point p2. Du moment que p2.equals(p1) retourne false, donc le point p2 sera également ajouté à l'ensemble.
En résumé :
(1) le hashCode permet d'éviter d'appliquer la méthode equals() à tous les objets dans le HashSet
(2) c'est la méthode equals() qui permet de décider si l'objet existe déjà ou pas dans le HashSet
@@farhatramzi9496
C'est clair.
Merci beaucoup