Bonjour,

j'avais une partie de code qui utilisait des hashtable et des enumeration. J'ai converti tous les hashtable en treemap et les enumeration en iterator pour remettre aux gouts du jour =)
Cependant, à un endroit précis, j'ai:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Iterator clesFils = fils.keySet().iterator();
 
            while (clesFils.hasNext()) {
               String cleTemp = (String)clesFils.next();
                Fil filTemp = ((Fil)fils.get(cleTemp));
                if (filTemp.estRelieA(codeElem))    supprimerFil(cleTemp);
            }
Ce qui engendre une erreure ConcurrentModificationException, je crois.
Tout ceci est du au fait que la methode supprimerFil implique des changements sur le treeMap "fils" et donc l'iterator n'aime pas.
Après avoir fait quelques recherches, j'ai essayé de synchroniser l'iterator et cela donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Set s = Collections.synchronizedSet(fils.keySet()); 
         synchronized(s) {
        Iterator clesFils = s.iterator();
 
            while (clesFils.hasNext()) {
               String cleTemp = (String)clesFils.next();
                Fil filTemp = ((Fil)fils.get(cleTemp));
                if (filTemp.estRelieA(codeElem))    supprimerFil(cleTemp);
            }
         }
Et cela ne résoud pas mon problème, malheureusement. Ai je mal fait quelque chose ?
Sous netbeans, voila ce qu'il me met :
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1031)
at java.util.TreeMap$KeyIterator.next(TreeMap.java:1058)
at saisieschema.FenetreEditeurSchema.supprimerElement(FenetreEditeurSchema.java:1060)
Si vous avez des idées, merci !