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 :-( ...
A voir également:

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
Rejoignez-nous