La méthode tostring () code> n'est pas remplacée dans définir code> ou sa hiérarchie, alors comment les éléments sont-ils imprimés? Output :----In Hashcode----first
----In Hashcode----second
----In Hashcode----third
----In Hashcode----fourth
----In Hashcode----fourth
In Equals
fourth=====equals======fourth
----In Hashcode----fourth
----In Hashcode----second
----In Hashcode----third
----In Hashcode----first
elements in hashset[Hello@b4616a1a, Hello@c9
]
3 Réponses :
Vous utilisez le définir code> est une interface.
Il ne peut pas remplacer les méthodes. P>
hashset code> classe forte>, qui hérite abstractcollection.tostring () code> p>
Les implémentations définies hériter de abstractcollection . Les éléments définis sont émis sous la forme d'une liste de chaînes séparée par des virgules. P>
De plus, lorsque je imprime Hashset, la méthode HashCode est appelée à chacun des éléments? Cela signifie-t-il que l'itérateur appelle cette méthode?
hashcode () code> est appelé dans les méthodes d'obtention et de mise de hashmap code>, que hashset code> utilise en interne (réellement linkedhashmap code>) . Voir GrepCode .Com / File / Repository.GrepCode.com / Java / Root / JDK / Ouvrez JDK / ... si vous êtes intéressé.
hashset renvoie des chaînes séparées par des virgules comme annulé par sa super classe Pas de surprises! P> abstraitset. code> p>
Ensuite, il est évident que vous n'avez pas vérifié toute la hiérarchie. Voir la classe abstractcollection.
Je viens de voir le code (genre de) et aucune question.
@Manoj: Non; Il vérifie la mauvaise hiérarchie.
définir code> n'hérite pasabstractcollection code>.@Slaks mais hashset fait.
@Manoj: Exactement. Il vérifie la mauvaise hiérarchie.
SET code> n'a pas de mise en œuvre. Le code exécuté lorsquehashset.tostring () code> est appelé est dansabstractcollection code>. Vous pouvez voir cela dans l'API DOCS dehashset code> où il est indiqué: "Méthodes héritées de la classe Java.Util.AbstractCollection"