La première chose que vous devez savoir est qu'il HashSet
agit comme un Set
, ce qui signifie que vous ajoutez votre objet directement à HashSet
et qu'il ne peut pas contenir de doublons. Vous ajoutez simplement votre valeur directement dans HashSet
.
Cependant, HashMap
c'est un Map
type. Cela signifie que chaque fois que vous ajoutez une entrée, vous ajoutez une paire clé-valeur.
Dans HashMap
vous pouvez avoir des valeurs en double, mais pas des clés en double. Dans HashMap
la nouvelle entrée remplacera l'ancienne. L'entrée la plus récente sera dans le HashMap
.
Comprendre le lien entre HashMap et HashSet:
Rappelez-vous, HashMap
ne peut pas avoir de clés en double. Derrière la scène HashSet
utilise un fichier HashMap
.
Lorsque vous essayez d'ajouter un objet dans un HashSet
, cette entrée est en fait stockée en tant que clé dans le HashMap
- le même HashMap
qui est utilisé derrière la scène de HashSet
. Étant donné que ce sous-jacent a HashMap
besoin d'une paire clé-valeur, une valeur fictive est générée pour nous.
Maintenant, lorsque vous essayez d'insérer un autre objet dupliqué dans le même HashSet
, il tentera à nouveau de l'insérer en tant que clé dans le HashMap
couché en dessous. Cependant, HashMap
ne prend pas en charge les doublons. Par conséquent, HashSet
il en résultera toujours une seule valeur de ce type. En remarque, pour chaque clé dupliquée, puisque la valeur générée pour notre entrée dans HashSet est une valeur aléatoire / factice, la clé n'est pas du tout remplacée. il sera ignoré car la suppression de la clé et l'ajout de la même clé (la valeur fictive est la même) n'aurait aucun sens.
Résumé:
HashMap
autorise la duplication values
, mais paskeys
.
HashSet
ne peut pas contenir de doublons.
Pour savoir si l'ajout d'un objet est terminé avec succès ou non, vous pouvez vérifier la boolean
valeur renvoyée lorsque vous appelez .add()
et voir si elle renvoie true
ou false
. S'il est retourné true
, il a été inséré.
HashMap
pour voir s'ilkey
existe déjà avant de faire appelput
au supportmap
?