Comment les ensembles d'éviter les doublons en interne?
J'ai eu un doute au sujet de l'ensemble des Collections cadre. La façon dont l'ensemble lui-même permettra d'identifier les doublons et comment faire pour le savoir? Quelqu'un pourrait-il expliquer comment il est mis en œuvre? Comment hashcode et equals méthode viendront dans l'image? J'ai besoin d'une explication succincte, il est vraiment important pour moi.
J'ai besoin d'une approche qui, il y a la mise en œuvre fonctionnellement.
OriginalL'auteur Kosuri Naresh | 2013-02-25
Vous devez vous connecter pour publier un commentaire.
Il est à peu près les œuvres de ce genre
Et la méthode contains, est égal à/hashcode.
Dans TreeSet, les éléments sont stockés dans un Rouge-Noir de l'Arbre, tandis que HashSet, utilise une table de hachage.
En effet, la façon dont il est ajouté au conteneur est spécifique à l'élément (le spot sur l'arbre, un seau dans la table de hachage), donc l'ajout de lui-même utilise est égal à/hashcode.
OriginalL'auteur Karthik T
C'est expliqué dans le javadoc pour
Set
.OriginalL'auteur Daniel Kaplan
HashSet
utilisehashcode()
toresolve seau, où l'objet doit aller etequals()
méthode de vérification de l'égalité sur les objets se trouvant sur ce seauequals
pour obtenir un duplicata? Sons analogue à la mémoire cache hits.Est mon interprétation correcte?OriginalL'auteur Jigar Joshi
La mise en œuvre effective dépend du récipient.
HashMap
la recherche de l'élément opposé compte tenu de sonhashCode
puis testez l'objet inséré et celles qui sont stockées en utilisantequals
(c'est une des raisons pour exiger quea.equals(b)
iffb.equals(a)
).TreeMap
, d'autre part, s'appuie sur le résultat de lacompareTo
méthode (si l'élément met en œuvreComparable
ou lacompare
méthode mise en œuvre par unComparateur
). Sicompare
renvoie la valeur 0, les éléments sont considérés comme des "égaux". (Notez quecompareTo
devrait être conforme est égale à, c'est à direa.compareTo(b)==0
iffa.equals(b)
).OriginalL'auteur Javier
"Peut-u s'il vous plaît expliquer à l'aide de ces exemples. s.add("123");s.add("123");"
Pour la requête ci-dessus est expliqué dans le contexte de l'interface, Veuillez consulter ci-dessous l'extrait de l'explication.
Si vous remarquez dans l'extrait ci-dessus, nous avons ajouté 123 à deux reprises. pour la première fois ajouter SOP retournera true. ensuite, pour la deuxième fois de l'ajout des "123", SOP retournera false.
Avec cela, nous pouvons comprendre que, si l'on ajoute même de la valeur dans le Jeu pour la deuxième fois ou plus, alors le double de la valeur sera ignorée.
OriginalL'auteur Eswaran Venkatesan