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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Etudiant extend Personne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Enseignant extend Personne
Je remplis donc mon hashSet de personne comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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