Suppression d'éléments dans une liste - ConcurrentModificationException
Bonjour, je n'ai pas trop l'habitude de manipuler des listes en java.
Mon problème intervient avec ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
private List<ConnectedUser> users;
... (dans le constructeur)
this.users = new ArrayList<ConnectedUser>();
...
public void removeUser(String userName) {
for(ConnectedUser u:users) {
if(u.getUsername().equals(userName)) {
users.remove(u);
}
}
} |
Ce code génère une
Code:
Exception in thread "ServerThread"java.util.ConcurrentModificationException
Si j'ai bien compris, c'est parceque quand on itère sur la liste dans le for, on ne peut pas la modifier. Quelle est alors la bonne façon d'enlever un élément de la liste? Ma première idée et de faire une copie de la liste pour itérer, mais ça parait coûteux en temps... Y a-t'il une meilleur solution?