Collections : Les hasSet et hashcode dans java

0
7366

Dans la première partie des collections nous avons vue comment remplacer un array par un arraylist et surtout les avantages qui vont avec comme ajouter et retiré des objets de notre arraylist sans trop de soucier de la taille.

Désormais nous allons voir un autre objet des collections qui est le Set et notamment le hashSet et pourquoi il est particulier.

Comment utiliser un hashSet ?

Pour utiliser un hashSet nous allons faire la même chose que les arrayList c’est-à-dire prendre un objet et le placer dans le hashset de la même façon c’est-à-dire avec un add. Mais d’abord il faut instancier un hashSet.

Et tout comme les arraylist nous allons imprimer le résultat de notre hashSet.

Qui nous donne le résultat suivant.

Le HashSet n’est pas ordonné

Alors le premier constat que nous pouvons faire c’est nos objets ne sont pas ordonné ! par contre si on créer une ArraylIst et que nous plaçons nos objets dedans nous allons les sortir selon l’ordre que nous les avons placés.

Résultat ;

Alors cela veut dire que nous n’allons pas pouvoir utiliser un get puis le numéro d’index pour avoir notre objet.

Pas de doublons dans un hashSet

Alors un avantage avec les hashSet c’est qu’il n’accepte pas de doublons donc si on place deux fois le même objet alors le hashSet ne l’acceptera pas.

Qui donne le résultat suivant :

Comment fonctionne le Hashcode ?

Chaque variable, objet a une signature que nous appelons le hashCode. Si je prends le nom qui se trouve dans mon objet daniel et que je reprends son hasCode et que je créer un nouveau String qui contient le mot Daniel alors il aura el même Hashcode.

Le codehash

Par contre si je prends uniquement le hashcode de mon objet daniel il aura un autre numéro que celui du string que nous venons de créer.

Le codehash

Personnaliser la restriction de doublon.

Avec cette information nous allons pouvoir créer une collection de Personne mais le codeHash devra uniquement contrôle le nom d’une personne et non l’objet donc on ne veut pas avec deux personnes qui se nomme Daniel dans notre collection de Personne.

Pour cela nous allons devoir aller dans la class Personne et modifier la signature du codeHash en disant que le code hash que l’objet doit être représenter doit venir du nom et de rien d’autre.

Si vous travailler avec un IDE comme moi alors vous pouvez générer ce code sinon vous allez devoir l’écrire à la main comme un grand(e).

Donc ici on a modifié le hashcode de notre class et nous avons aussi définit qu’il doit donc utiliser l’attribut nom pour utiliser la méthode equals.

Aller on test cela

Je vais donc créer une nouvelle personne qui se nomme aussi daniel et essayer de l’ajouter à notre hashset.

Et comme on peut le voir cela ne fonctionne pas.

Par contre si on retire la modification que nous avons fait dans notre class personne alors il s’ajoute.

Conclusion.

Si vous n’avez pas de problème avec des doublons et que vous voulez garder l’ordre dans l’laquelle vos objets sont entrée dans une collection utiliser alors un ArrayList sinon utiliser un HashSet.

Voila donc pour les collections dans java, amuser vous bien avec cela et on se trouve dans une prochaine vidéo salut tout le monde.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.