Comment est Définie.toString() mise en œuvre?

La toString() méthode n'est pas remplacée dans les Set ou de sa hiérarchie, alors, comment sont les éléments imprimés?

import java.lang.Math;
import java.util.HashSet;
class Hello{

public String name= ""; 

Hello(String name){

    this.name = name;   

}


public static void main(String args[]){

 Hello h1 = new Hello("first");
 Hello h2 = new Hello("second");
 Hello h3 = new Hello("third");
 Hello h4 = new Hello("fourth");
 Hello h5 = new Hello("fourth");

 HashSet hs = new HashSet(); 
 hs.add(h1);
 hs.add(h2);
 hs.add(h3);
 hs.add(h4);
 hs.add(h5);

 //hs.add(h5);
 //hs.add(null);

    System.out.println("elements in hashset"+hs);
      //System.out.println("elements in hashset"+hs.contains());
     //System.out.println("elements in hashset"+hs.contains(new Hello("who")));
    } 

    public boolean equals(Object obj){
        System.out.println("In Equals");
        System.out.println(name+"=====equals======"+((Hello)obj).name);
        if(name.equals(((Hello)obj).name))
            return true;
        else
             return false;
    }

    public int hashCode(){
        System.out.println("----In Hashcode----"+name); 
        return name.hashCode();
    }
}
De sortie :----Dans Hashcode----première 
----Dans Hashcode----deuxième 
----Dans Hashcode----troisième 
----Dans Hashcode----quatrième 
----Dans Hashcode----quatrième 
Dans Est Égal À 
quatrième=====égal à======quatrième 
----Dans Hashcode----quatrième 
----Dans Hashcode----deuxième 
----Dans Hashcode----troisième 
----Dans Hashcode----première 
éléments hashset[Bonjour@b4616a1a, Bonjour@c9 
] 

Aussi, Quand j'ai l'impression hashset le hashcode méthode est appelée pour chaque élément ?Signifie-t-il l'itérateur appelle cette méthode ?

  • ensuite, il est évident que vous n'avez pas coché l'ensemble de la hiérarchie. voir la classe AbstractCollection.
  • Je viens de voir le code (un peu) et pas de question.
  • Non; il est la vérification de la hiérarchie incorrect. Set n'héritent pas AbstractCollection.
  • mais HashSet n'.
  • Exactement. Il est de la vérification de la hiérarchie incorrecte.
  • Yaaah .. eu .. Thnx ...
  • 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 les docs de l'API de HashSet où il est dit: "les Méthodes héritées de la classe java.util.AbstractCollection"

InformationsquelleAutor crackerplace | 2011-05-09