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
16100
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 janvier 2020
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
-
Bonjour, ok mais comment guider moi s'il vous plait
EN faite pour la photo j'arrive pas a l'inserer ???
KX
Messages postés
16100
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 janvier 2020
88 > aboubakr664
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
-
Je ne sait rien de ton code vu que tu ne l'a pas mis. Ce qui est quand même un minimum quand on demande de l'aide sur un programme...

Basiquement ceci pourrait suffire.
List<?> avecDoublon = ...;
Set<?> sansDoublon = new LinkedHashSet<>(avecDoublon);
aboubakr664
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
> KX
Messages postés
16100
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 janvier 2020
-
oui vous avez parfaitement raison
j' envoi le code pour que vous compreniez mieux

voici la methode que j'ai fait pour me retournee une liste de donnees.
Dans cette derniere nous avons des donnees calculees et ces donnees

 public List<JourneesTravaillees> DetailsPaie1(String datedebut, String dateFin) throws RemoteException {
          List<JourneesTravaillees> list = new ArrayList<>();
       String sql = "select * "
                + "from JourneesTravaillees jr join  Personnel p on(jr.matricule=p.matricule)"
                + " join Fonctions f on (f.code_fonction=jr.code_fonction)"
                + " join SalaireHoraire sh on (sh.categorie=jr.categorie)"
                + " where jr.date BETWEEN '" + datedebut + "' and '" + dateFin + "' ";
        JourneesTravaillees jr = null;
        try {
            DB db = DB.getInstance();
            ResultSet rs = db.My_ExecuteQuery(sql);
          
            while (rs.next()) {
                
              jr = new JourneesTravaillees();
                Personnel p = new Personnel();
                p.setMatricule(rs.getInt("matricule"));
                p.setNom_journalier(rs.getString("nom_journalier"));
                jr.setPersonnel(p);
                jr.setJour(rs.getString(2));
                Fonctions f = new Fonctions();
                 f.setCode_fonction(rs.getInt("code_fonction"));
                  f.setNom_fonction(rs.getString("nom_fonction")) ;
                jr.setFonction(f);
                jr.setNb_heures(rs.getInt(4));
                jr.setDate(rs.getDate(5).toLocalDate());
                 SalaireHoraire sh = new SalaireHoraire();
                  sh.setCategorie(rs.getString("categorie"));
                  sh.setTaux_horaire(rs.getFloat("taux_horaire"));
                  sh.setIR(rs.getFloat("IR"));
                jr.setCategorie(sh);
                jr.setCategorie_speciale(rs.getString(7));
                

                //mes calcules
                jr.setPanier(Panier(rs.getInt(4)));
                jr.setSalissure(Salissure(rs.getInt(4)));
                jr.setSalaire_base(SalaireBase(rs.getInt(4), getTauxHoraireByCategorie(rs.getString("categorie"))));
                jr.setConges(Conges(jr.getSalaire_base(), jr.getSalissure()));
                jr.setSalBase_cong(SalBaseCong(jr.getSalaire_base(), jr.getConges()));
                jr.setTmp2(tmp2(jr.getSalBase_cong()));
                jr.setA(A(jr.getTmp2()));
                jr.setB(B(jr.getA()));
                jr.setDp(dp(jr.getB()));
                jr.setC(C(jr.getB()));
                jr.setTx_18(tx_18(jr.getC()));
                jr.setTx_22(tx_22(jr.getC()));
                jr.setTx_25(tx_25(jr.getC()));
                jr.setTx_28(tx_28(jr.getC()));
                jr.setTotal_tx(total_tx(jr.getTx_18(), jr.getTx_22(), jr.getTx_25(), jr.getTx_28()));
                jr.setD(D(jr.getTotal_tx()));
                jr.setDpr(dpr(jr.getD()));
                jr.setTotalpanier(TotalPanier(jr.getPanier()));
                jr.setIr(IR(jr.getDp(), jr.getDpr()));
                jr.setBase_trimf(Base_Trimf(jr.getSalBase_cong(), jr.getSalissure()));
                jr.setTrimf_B(TrimF_B(jr.getBase_trimf()));
                jr.setTrimF(TrimF(jr.getTrimf_B()));
               jr.setSalaireNetPercue(Salaire_Net_Percue(jr.getSalBase_cong(), jr.getSalissure(), jr.getTotalpanier(), jr.getPanier(), jr.getIr(), jr.getTrimF()));
               list.add(jr);
            }
        } catch (Exception ex) {
            Logger.getLogger(Implementation.class.getName()).log(Level.SEVERE, null, ex);
        }
        return list;
    }



maintenant voila ma classe controller :



@FXML
void ActionRechercher(ActionEvent event) {
Utils.init();
try {
if(txtDateDebut1.getValue() !=null && txtDateFin1.getValue() !=null)
{
List<JourneesTravaillees> listjr =Utils.getIClass().DetailsPaie1(txtDateDebut1.getValue().toString(),txtDateFin1.getValue().toString());
if(listjr.isEmpty()){
Notification("INFORMATION", "NOUS N'AVONS PAS TROUVER DE PERSONNEL A CETTE DATE "
+ "VEILLEZ REVOIR S'IL VOUS PLAIT");
return;
}

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(Utils.transform1(newList)));
}else{
Notification("INFORMATION", "Il est obligatoire de choisir une date de debut et une date defin");

}
} catch (RemoteException ex) {
Logger.getLogger(DetailsController.class.getName()).log(Level.SEVERE, null, ex);
}
}
aboubakr664
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
-
supposons la liste retourne le résultats suivant:

matricule Nom Salaire
01 ABOU 20
07 DIALLO 30
01 ABOU 70
89 KX 100
01 ABOU 30
face a ce résultat j'aimerais parcourir la liste regroupant les informations par Matricule , Nom et faire la somme de leur Salaire.
donc au finish on doit avoir sa :
matricule Nom Salaire
01 ABOU 120
07 DIALLO 30
89 KX 100
KX
Messages postés
16100
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 janvier 2020
88 > aboubakr664
Messages postés
9
Date d'inscription
mardi 12 septembre 2017
Statut
Membre
Dernière intervention
20 septembre 2017
-
Quel rapport entre le code que tu nous donnes et ton problème ?
Je ne vois pas où tu fais le regroupement de tes données...

Voici un exemple en partant de zéro :

Personnel abou = new Personnel(1, "ABOU");
Personnel diallo = new Personnel(7, "DIALLO");
Personnel kx = new Personnel(89, "KX");

Date juin = computeJourPaie(1, 6, 2017);
Date juillet = computeJourPaie(3, 7, 2017);
Date aout = computeJourPaie(1, 8, 2017);

List<FichePaie> fichesPaies = Arrays.asList(
        new FichePaie(abou, juin, 20),
        new FichePaie(diallo, juin, 30),
        new FichePaie(abou, juillet, 70),
        new FichePaie(kx, juillet, 100),
        new FichePaie(abou, aout, 30)
);

System.out.println(fichesPaies); // 1 ABOU 20.0, 7 DIALLO 30.0, 1 ABOU 70.0, 89 KX 100.0, 1 ABOU 30.0

Map<Personnel, Double> salairesCumules = new HashMap<>();
for (FichePaie paie : fichesPaies) {
    Personnel employe = paie.getEmploye();
    Double cumul = salairesCumules.get(employe);
    if (cumul == null) {
        cumul = paie.getMontant();
    } else {
        cumul += paie.getMontant();
    }
    salairesCumules.put(employe, cumul);
}

System.out.println(salairesCumules); // 1 ABOU=120, 7 DIALLO=30, 89 KX=100

Le reste du code :

public class Personnel {

    private int matricule;
    private String nom;

    public Personnel(int matricule, String nom) {
        this.matricule = matricule;
        this.nom = nom;
    }

    @Override
    public String toString() {
        return matricule + " " + nom;
    }
}

public class FichePaie {

    private Personnel employe;

    private Date jourPaie;

    private double montant;

    public FichePaie(Personnel employe, Date jourPaie, double montant) {
        this.employe = employe;
        this.jourPaie = jourPaie;
        this.montant = montant;
    }

    public Personnel getEmploye() {
        return employe;
    }

    public double getMontant() {
        return montant;
    }

    @Override
    public String toString() {
        return employe + " " + montant;
    }
}

public static Date computeJourPaie(int day, int month, int year) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, day);
    return cal.getTime();
}
Commenter la réponse de KX