Parcourir une liste

Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
-
Bonjour,
voila jai une liste qui contient par exemple comme le montre la photo :


j'aimerais parcourir la liste recuperer le premier element puis le verifier dans toute la liste . si elle se repete je fait la somme du nombre d'heure puis j'insert la valeur dans une nouvelle liste . ainsi jusqu'a la fin .
donc au finish ma nouvelle liste ne doit pas avoir de doublons .
merci
Afficher la suite 

1 réponse

Messages postés
16090
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 décembre 2019
88
0
Merci
Bonjour,

Il n'y a pas de photo dans ton message...

Et si tu ne veux pas de doublon il faut considérer les Set, pas les List, qui elles peuvent avoir des doublons.
aboubakr664
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
> KX
Messages postés
16090
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 décembre 2019
-
ok avec le code suivant :

voila la liste qui contient mes donnees avec doublons ;
 List<JourneesTravaillees> listjr = new ArrayList<>();
               
             listjr =Utils.getIClass().DetailsPaie1(txtDateDebut1.getValue().toString(),txtDateFin1.getValue().toString());
  

    int mat=0 ;
    List<JourneesTravaillees> newList = new ArrayList<>();
    for(JourneesTravaillees lp:listjr)
    {
        double cpt=0;
        mat =lp.getPersonnel().getMatricule();
        for( JourneesTravaillees lps: listjr)
        {
            if(mat==lps.getPersonnel().getMatricule() && cpt!=0)
            {                 
               lp.setSalaireNetPercue(lp.getSalaireNetPercue()+lps.getSalaireNetPercue());
             
             }
            cpt++;
        }       
            newList.add(lp);
            listjr.remove(lp);
        
    }

colmat.setCellValueFactory(new PropertyValueFactory<>("matricule"));
            colnom.setCellValueFactory(new PropertyValueFactory<>("nom_journalier"));
            colnbheure.setCellValueFactory(new PropertyValueFactory<>("nb_heures"));
            coljournee.setCellValueFactory(new PropertyValueFactory<>("journee"));
            colSalisure.setCellValueFactory(new PropertyValueFactory<>("salissure"));
           colpanier.setCellValueFactory(new PropertyValueFactory<>("panier"));    
           colsalBase.setCellValueFactory(new PropertyValueFactory<>("salaire_base"));
           colsalcong.setCellValueFactory(new PropertyValueFactory<>("conges"));
           colsalbasecong.setCellValueFactory(new PropertyValueFactory<>("salBase_cong"));
           colpanierTotal.setCellValueFactory(new PropertyValueFactory<>("totalpanier"));
           colCalaireNet.setCellValueFactory(new PropertyValueFactory<>("salaireNetPercue"));
           tableview.setItems(FXCollections.observableArrayList((listjr)));
  


mais sa me signale une erreur au niveau de la premier boucle for :

Caused by: java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
KX
Messages postés
16090
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 décembre 2019
88 > aboubakr664
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
-
Tu ne peux pas faire
listjr.remove(lp);
pendant que tu itères avec une boucle
for(JourneesTravaillees lp:listjr)

La liste sur laquelle tu boucles doit garder les même valeurs, sinon ça décalerait tout.
aboubakr664
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
> KX
Messages postés
16090
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 décembre 2019
-
si vous avez compris ce que j'essayait de faire alors que me suggerez vous comme solution ?
KX
Messages postés
16090
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 décembre 2019
88 > aboubakr664
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
-
Je n'ai pas compris ce que tu essayais de faire, et je n'essaye même pas, c'est un code partiel, je n'ai pas le contexte, donc je me limite à l'analyse du bug.

Enlèves la ligne
listjr.remove(lp);
de ta boucle, et après ta boucle tu ajoutes
listjr.removeAll(newList)
aboubakr664
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
> KX
Messages postés
16090
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 décembre 2019
-
ok, merci
je vais le faire a plus
Commenter la réponse de KX