La première chose que vous devez savoir est ,HashSet
agir comme un Set
ce qui signifie que vous ajoutez votre objet directement à l' HashSet
et il ne peut pas contenir de doublons. c'est à dire que Vous venez d'ajouter directement la valeur en HashSet
.
Toutefois, HashMap
est Map
type, ce qui signifie que chaque fois que vous ajoutez un peu de l'entrée, vous ajoutez paire clé-valeur.
En HashMap
, vous pouvez avoir des valeurs en double, mais pas des doubles des clés. En HashMap
, la nouvelle entrée remplacera l'ancien. ie récente entrée sera en HashMap
Comprendre le Lien entre la table de hachage et HashSet:
Rappelez-vous, HashMap
ne peut pas avoir des doubles des clés. Maintenant , Derrière la scène, HashSet
utilise HashMap
.
Lorsque vous essayez d'ajouter n'importe quel objet en HashSet
, cette entrée est stockée comme clé dans l' HashMap
,le même HashMap
qui est utilisé derrière la scène de l' HashSet
. Depuis , cette sous-jacent HashMap
des besoins de paires clé-valeur,une valeur factice seront générés pour nous qui nous n'aurions pas d'avis ou ne serait pas de soins.
Maintenant, lorsque vous essayez d'insérer un autre objet en double dans le même HashSet
, il sera de nouveau tenté d'insérer la clé dans l' HashMap
couché,cependant, HashMap
ne prend pas en charge /contenir des doublons. Par conséquent, HashSet
produira toujours avoir une seule valeur de ce type. Sur le côté de la note pour chaque double de la clé, puisque la valeur générée pour notre entrée dans HashSet est du hasard/valeur factice que nous n'aurions pas de soins, la clé n'est pas remplacé. il sera ignoré que le retrait de la clé et en rajoutant même clé ( la valeur est factice /même ) ne fera pas le moindre sens.
Résumé:
HashMap
permet de dupliquer values
, mais pas keys
.
HashSet
ne contient en double.
Juste pour jouer avec si plus d'un objet est terminé avec succès ou pas , vous pouvez vérifier l' boolean
de la 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é .