Le 03/05/2026 à 16:07, slehuta a écrit :
Bonjour,
Bonjour,
j'ai un doute sur un code qui compile mais fait il ce que je veux. Le but c'est de boucler sur une liste et de supprimer certains elements de la liste si une condition est remplie. *Actuellement c'est codé comme ci-dessous (l'iterator est effort, la liste est reallocMet): et si la condition est remplie, on fait effort.remove() ca ne devrait il pas être : reallocMet.remove(effort) ?
le code : List<EffortDescription> reallocMet = MetiersPossibles; // liste des metiers encore autorisés for (Iterator<EffortDescription> effort = reallocMet.iterator(); effort.hasNext(); ) { Metier met = effort.next().getPossibleMetiers(); if (StratMonthInfo.getProportionMetier(met) == 0) { effort.remove(); }
effort.remove(); supprime l'element pointé par l'itérateur reallocMet.remove(effort) fonctionnerait aussi dans un autre contexte.
*Accessoirement pourquoi on utilise un iterator et pas une boucle simple for(EffortDescription effort : reallocMet){
On peut utiliser cela pour parcourir la liste, mais dans ce cas précis, on ne pourrait pas faire "reallocMet.remove(effort)" parce qu'on ne peut pas modifier une liste pendant qu'on la parcourt. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28