Bonjour à tous! Voilà, j'ai parcourus quelques pages du forum mais ai abandonné devant la quantité astronomique de sujets, donc désolé si le sujet à déjà été abordé!
Voilà mon problème: utilisant un <code>hashSet</code> pour gérer les doublons d'une liste remplis à partir de fichiers de données, je le remplis convenablemant a partir de différents fichiers: etu1,ens1,... (1 fichier par personnes)
La hierarchie globale c'est:
Enseignant extend Personne
Je remplis donc mon hashSet de personne comme ceci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
public void testSet()
{
Iterator <Personne> it = listPers.iterator();
Set<Personne> monHashSet=new HashSet<Personne>(); // on crée notre Set
while(it.hasNext())
{
System.out.println(monHashSet.add(it.next())); // On remplit le set à partir de la liste en utilisant un iterator
System.out.println("******************************************");
}
Iterator<Personne> i=monHashSet.iterator(); // on crée un Iterator pour parcourir notre HashSet
while(i.hasNext()) // tant qu'on a un suivant
{
System.out.println(i.next()); // on affiche le suivant
System.out.println("******************************************");
} |
listPers passer comme attribut de la classe testCollection
et elle est remplis par:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public void testAjout()
throws IOException
{
Enseignant ens ;
Ask dem = new Ask("donnees/ens1.don");
Etudiant et ;
Ask dem2 = new Ask("donnees/etu1.don");
Etudiant et1b;
Ask dem7 = new Ask("donnees/etu1.don");
try
{
ens = new Enseignant(dem);
et = new Etudiant(dem2);
et1b = new Etudiant (dem7);
ajoutDePersonnes(ens);
ajoutDePersonnes(et);
ajoutDePersonnes(et1b);
} catch (Exception e)
{ System.out.println("Erreur : "+ e.getMessage()); }
} |
La méthode ajout de personne:
1 2 3 4 5
|
public void ajoutDePersonnes(Personne pers)
{
listPers.add(pers);
} |
Or ce test me donne un Set avec doublon, ce qui normalement ne devrait pas.
Bien sur j'ai redéfini dans la classe Personne par override la méthode equals donc je ne comprend pas pourquoi le set ne fonctionne pas.
*Ask fait partie d'une classe créer pour entrer des données par un flux:
Ask(): appel une saisie clavier
Ask(String fichier): remplis a partir d'un fichier fichier
Partager