Parcourir une liste

aboubakr664 9 Messages postés mardi 12 septembre 2017Date d'inscription 20 septembre 2017 Dernière intervention - 12 sept. 2017 à 15:14 - Dernière réponse : aboubakr664 9 Messages postés mardi 12 septembre 2017Date d'inscription 20 septembre 2017 Dernière intervention
- 14 sept. 2017 à 18:55
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 

Votre réponse

13 réponses

KX 15425 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 mai 2018 Dernière intervention - 12 sept. 2017 à 20:32
0
Utile
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 9 Messages postés mardi 12 septembre 2017Date d'inscription 20 septembre 2017 Dernière intervention > KX 15425 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 mai 2018 Dernière intervention - 14 sept. 2017 à 13:14
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 15425 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 mai 2018 Dernière intervention > aboubakr664 9 Messages postés mardi 12 septembre 2017Date d'inscription 20 septembre 2017 Dernière intervention - 14 sept. 2017 à 13:59
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 9 Messages postés mardi 12 septembre 2017Date d'inscription 20 septembre 2017 Dernière intervention > KX 15425 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 mai 2018 Dernière intervention - 14 sept. 2017 à 14:07
si vous avez compris ce que j'essayait de faire alors que me suggerez vous comme solution ?
KX 15425 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 mai 2018 Dernière intervention > aboubakr664 9 Messages postés mardi 12 septembre 2017Date d'inscription 20 septembre 2017 Dernière intervention - 14 sept. 2017 à 18:51
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 9 Messages postés mardi 12 septembre 2017Date d'inscription 20 septembre 2017 Dernière intervention > KX 15425 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 16 mai 2018 Dernière intervention - 14 sept. 2017 à 18:55
ok, merci
je vais le faire a plus
Commenter la réponse de KX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.