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:
Ce qui engendre une erreure ConcurrentModificationException, je crois.
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); }
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 :
Et cela ne résoud pas mon problème, malheureusement. Ai je mal fait quelque chose ?
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); } }
Sous netbeans, voila ce qu'il me met :
Si vous avez des idées, merci !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)
Partager