Problème de remplissage de liste

Résolu
Rune188 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonsoir et bonne année,

Je rencontre un problème avec le remplissage d'une liste.
j'essaye de remplir un liste mais celle-ci ne se rempli que avec les mêmes valeur alors que je change pourtant a chaque tour de boucle for les valeurs de cette objet
voici mon code:
        BookCount bc = new BookCount();
        List<BookCount> bcList= new ArrayList<BookCount>();
        for(int i =0;i<bkLst.size();i++){
            bc.setBk(bkLst.get(i));
            bc.setNbr(countFile.get(i));
            System.out.println("book a ajouter: "+bc.getBk());
            bcList.add(bc);
        }
        
        System.out.println("*********************");
        for(int i =0;i<bcList.size();i++){
            System.out.println(bcList.get(i).getBk());
        }

et voici l'affichage:

A voir également:

3 réponses

Utilisateur anonyme
 
Bonsoir

analysons ce que fait ton code.
Il crée un objet bc dont la portée est valable pour tout le code

Ensuite il modifie l'objet bc et l'ajoute à une liste.
Ensuite il modifie l'objet bc et l'ajoute à une liste.
Etc.

Donc à la fin la liste c'est
[bc, bc, bc, bc, bc, bc, bc, ...., bc]

Il t'affiche donc
bc
bc
bc
bc
bc
....
bc

1
Rune188 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention  
 
ok donc si je crée l'objet à chaque tour de boucle cela devrait fonctionné
        List<BookCount> bcList= new ArrayList<BookCount>();
        for(int i =0;i<bkLst.size();i++){
            BookCount bc = new BookCount();
            bc.setBk(bkLst.get(i));
            bc.setNbr(countFile.get(i));
            System.out.println("book a ajouter: "+bc.getBk());
            bcList.add(bc);
        }


Merci, je passe en résolu
0
Utilisateur anonyme
 
Exactement
0