Problème Boucle remplissage d'arraylist !!!! [Résolu]

Signaler
Messages postés
15
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
29 mars 2013
-
Messages postés
15
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
29 mars 2013
-
Bonjour,
Je suis débutent en Java. J'ai un problème d'affichage d'une arraylist d'objets.
Je voudrais d'afficher le contenu d'un arraylist d'objets mais j'affiche toujours le même objet (le dernier).
Par exemple, si j'ajoute 3 objets différents, il m'affiche 3 fois le dernier ajouté. Pourquoi ?

code :
import java.util.ArrayList;

import com.ITExpertsConsulting.SDExpert.Persistance.Type;

public class Test {

public static void main(String []args){
ArrayList<Type> types=new ArrayList<Type>();
int i =0;

while(i<3){

Type type=Type.getInstence();
type.setIDType(i);
type.setLibellé_Type("type "+i);

types.add(type);
i++;
for(int j=0;j<types.size();j++)
{
System.out.println(types.get(j).getLibellé_Type());
}
}
}
}


Res :

type 0
type 1
type 1
type 2
type 2
type 2

Or la resultat attendue est :

type 0
type 0
type 1
type 0
type 1
type 2

Je trouve pas la solution , j'attend votre aide SVPL :-( ...
A voir également:

4 réponses

Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
23
Re,

Donc c'est bien ce que je te disais. Tu as 3 fois le même objet dans ta liste. Donc quand tu modifies le n-ième élément de ta liste, tu les modifies tous en même temps. Le résultat est donc normal. Si tu veux 3 objets différents, il ne faut évidemment pas utiliser de singleton.
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
23
Salut,

Le code que tu nous montres est bon, mais je présume que ton "getInstence()" te renvoie toujours la même instance. Ce qui fait que tu as 3x le même objet dans ta liste.

Montre-nous le getInstence() pour plus d'aide.
Messages postés
15
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
29 mars 2013

GetInstence() c'est le singloton :

private Type(){}


private static Type instence;
public static Type getInstence() {
if(instence==null)
instence=new Type();
return instence;
}


voila ...
Messages postés
15
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
29 mars 2013

ok merci jojolemariole , c'est exactement le problem , merci de nouveaux :)