Problème Boucle remplissage d'arraylist !!!!

Résolu
sa9rtounsi
Messages postés
15
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
29 mars 2013
- 29 mars 2013 à 13:19
sa9rtounsi
Messages postés
15
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
29 mars 2013
- 29 mars 2013 à 19:25
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 :-( ...

4 réponses

cs_jojolemariole
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
25
29 mars 2013 à 16: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.
3
cs_jojolemariole
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
25
29 mars 2013 à 13:37
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.
0
sa9rtounsi
Messages postés
15
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
29 mars 2013

29 mars 2013 à 15:40
GetInstence() c'est le singloton :

private Type(){}


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


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

29 mars 2013 à 19:25
ok merci jojolemariole , c'est exactement le problem , merci de nouveaux :)
0