7
votes

Comment set.tostring () implémenté?

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
]


6 commentaires

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 n'hérite pas abstractcollection .


@Slaks mais hashset fait.


@Manoj: Exactement. Il vérifie la mauvaise hiérarchie.


SET n'a pas de mise en œuvre. Le code exécuté lorsque hashset.tostring () est appelé est dans abstractcollection . Vous pouvez voir cela dans l'API DOCS de hashset où il est indiqué: "Méthodes héritées de la classe Java.Util.AbstractCollection"


3 Réponses :


24
votes

définir est une interface.
Il ne peut pas remplacer les méthodes.

Vous utilisez le hashset classe , qui hérite abstractcollection.tostring ()


0 commentaires

10
votes

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.


2 commentaires

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 () est appelé dans les méthodes d'obtention et de mise de hashmap , que hashset utilise en interne (réellement linkedhashmap ) . Voir GrepCode .Com / File / Repository.GrepCode.com / Java / Root / JDK / Ouvrez JDK / ... si vous êtes intéressé.



2
votes

hashset renvoie des chaînes séparées par des virgules comme annulé par sa super classe abstraitset.

Pas de surprises!


0 commentaires