[Java] HashSet.add

KX Messages postés 19031 Statut Modérateur -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

Je voudrais appliquer une modification à un objet p, et ajouter une copie de l'objet modifié dans un ensemble. Le problème c'est que quand j'ajoute l'objet p2 (issu de la modification de p) à mon ensemble, celui-ci ne contient pas les objets distincts des n objets précédemment insérés, mais n objets égaux au dernier élément inséré !

Code analogue à mon problème (j'ai simplifié pour que ce soit plus clair)

P p = new P();
HashSet<P> hs=new HashSet<P>();
boolean b;

for (int k=0; k<6; k++)
{
	p.modifier();
	P p2=new P(p);
	b=hs.add(p2);
}

/***********************************

	hs	[]
k=0
	p	"0"
	p2	"0"
	b	true
	hs	["0"]
k=1
	p	"1"
	p2	"1"
	b	true
	hs	["1","1"]
k=2
	p	"2"
	p2	"2"
	b	true
	hs	["2","2","2"]
k=3
	p	"3"
	p2	"3"
	b	true
	hs	["3","3","3","3"]
k=4
	p	"0"
	p2	"0"
	b	true
	hs	["0","0","0","0","0"]
k=5
	p	"1"
	p2	"1"
	b	true
	hs	["1","1","1","1","1","1"]

***********************************/

Je ne comprends pas ce résultat, moi à la fin je voudrais avoir hs=["0","1","2","3"] (éventuellement dans un autre ordre)

Remarque : j'ai préalablement surchargé equals dans la classe P, mais elle n'est jamais appelée !

Quel est le problème ?

Merci d'avance pour vos propositions...
A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
up ?
0