for: résoudre ConcurrentModificationException
Bonjour à tous,
En utilisant un for et un remove simultanément, j'ai rencontré une ConcurrentModificationException sur cette construction:
Code:
1 2 3 4 5 6 7 8
| HashMap<String,String> h = new HashMap<String,String>();
h.put("mot1","foo");
h.put("mot2","bar");
h.put("mot3","foobar");
for (String key: h.keySet()) {
if (h.get(key).equals("bar"))
h.remove(key);
} |
... ce qui est une erreur de débutant classique semble-t-il. La construction suivante est-elle une manière correcte de la contourner ? Je saisis mal le fait que la méthode() remove s'applique bien à l'élément qui avait été sélectionné par l'appel à next().
Code:
1 2 3 4 5
| Iterator<String> it = h.keySet().iterator();
while (it.hasNext()) {
if (h.get(it.next()).equals("bar"))
it.remove();
} |
Cordialement,
G.