Parcourir une liste

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

Messages postés
15827
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 12 sept. 2017 à 20:32
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.
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Dernière intervention
20 septembre 2017
>
Messages postés
15827
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 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)
Messages postés
15827
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 novembre 2018
>
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Dernière intervention
20 septembre 2017
- 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.
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Dernière intervention
20 septembre 2017
>
Messages postés
15827
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 14 sept. 2017 à 14:07
si vous avez compris ce que j'essayait de faire alors que me suggerez vous comme solution ?
Messages postés
15827
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 novembre 2018
>
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Dernière intervention
20 septembre 2017
- 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)
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Dernière intervention
20 septembre 2017
>
Messages postés
15827
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 novembre 2018
- 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.