0% ont trouvé ce document utile (0 vote)
3 vues2 pages

Comprendre le HashSet en Java

Un HashSet est une structure de données en Java qui stocke des objets sans ordre ni doublons, en se basant sur les méthodes hashCode() et equals() pour déterminer l'unicité. Lorsqu'un objet est ajouté, hashCode() détermine le 'bucket' dans une table de hachage, et equals() compare les objets dans ce même bucket pour vérifier les doublons. Pour garantir un comportement correct, il est essentiel de redéfinir equals() et hashCode() en fonction des critères d'unicité choisis.

Transféré par

Lobna Bakir
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues2 pages

Comprendre le HashSet en Java

Un HashSet est une structure de données en Java qui stocke des objets sans ordre ni doublons, en se basant sur les méthodes hashCode() et equals() pour déterminer l'unicité. Lorsqu'un objet est ajouté, hashCode() détermine le 'bucket' dans une table de hachage, et equals() compare les objets dans ce même bucket pour vérifier les doublons. Pour garantir un comportement correct, il est essentiel de redéfinir equals() et hashCode() en fonction des critères d'unicité choisis.

Transféré par

Lobna Bakir
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Qu’est-ce qu’un HashSet ?

Un HashSet est une structure de données qui permet de stocker des objets sans ordre et sans doublons.

Mais la phrase importante est celle-ci :

Un HashSet ne sait pas ce qu’est un doublon.


C’est le programmeur qui le lui apprend.

Il ne compare ni les noms, ni les attributs, ni les valeurs visuellement.


Il ne connaît que deux méthodes :
hashCode() et equals().

 Il faut TOUJOURS redéfinir equals() et hashCode() en conséquence.


hashCode() → pour choisir le bucket (case de la table de hachage)

equals() → pour comparer deux objets dans le même bucket

Comment HashSet stocke les objets ?


Un HashSet repose sur une table de hachage (hash table).

Imagine une grande armoire avec plein de tiroirs (appelés buckets).

Quand tu ajoutes un objet :

1. Java appelle hashCode() sur l’objet


2. Le nombre retourné sert à choisir un tiroir
3. Dans ce tiroir :
o s’il est vide → l’objet est ajouté
o s’il contient déjà des objets → Java appelle equals() pour comparer

 Deux objets ne sont considérés comme doublons que s’ils sont :

 dans le même bucket


 et que equals() retourne true
Remarque : À chaque fois que le critère d’unicité change, il faut redéfinir equals() et hashCode()

Exemples :

 Unicité par CIN → equals/hashCode sur cin


 Unicité par âge → equals/hashCode sur age
 Unicité par email → equals/hashCode sur email

Sinon, le HashSet se comporte de manière incorrecte.

Exercice
On souhaite modéliser la relation one-to-many entre deux classes Java : Groupe et Etudiant.

 Un Etudiant appartient à un seul Groupe.


 Un Groupe peut contenir plusieurs Etudiants.
 Les étudiants d’un groupe sont stockés dans un HashSet afin d’éviter les doublons.
 Chaque étudiant connaît son groupe. Quand on ajoute un étudiant à un groupe, on vérifie s’il n’appartient déjà à
un autre groupe.
 Deux étudiants sont considérés comme identiques s’ils ont le même CIN (identifiant unique).

Question : Implémenter les classes Etudiant, Groupe et une classe Main pour tester le fonctionnement du HashSet.

Vous aimerez peut-être aussi