Problème de remplissage de liste

Résolu
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:

3 réponses

  1. 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
    1. 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