ConcurrentModificationException et AbstractList
Bonjour à tous,
Lorsque je lance mon programme j'ai l'erreur suivante : java.util.ConcurrentModificationException
Voici la partie du code qui pose problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
private void processNewMessage(Message message) {
float probaLect;
float q = SimVirtCom.getNextRandomFloat();
Theme themeMess = message.getTheme();
Member auteur = message.getMember();
float levelRepKmemb = levelRepK.getLevelForThemeAndMember(themeMess, this);
float levelRepKauteur = levelRepK.getLevelForThemeAndMember(themeMess, auteur);
if (this.getAuteursMessagesLus().size() == 0) {
this.getMessagesLus().add(message);
this.getAuteursMessagesLus().add(auteur);
updateLevelReputationK(message);
updateLevelKnowledge(message);
shouldAnswer(message);
}
else {
for (Iterator it = this.getAuteursMessagesLus().iterator(); it.hasNext();) {
Member auteurMessageLu = (Member) it.next();
if (auteurMessageLu.equals(auteur)) {
probaLect = levelRepKauteur - levelRepKmemb;
if (probaLect > q) {
this.getMessagesLus().add(message);
updateLevelReputationK(message);
updateLevelKnowledge(message);
shouldAnswer(message);
}
}
else {
this.getAuteursMessagesLus().add(auteur);
this.getMessagesLus().add(message);
updateLevelReputationK(message);
updateLevelKnowledge(message);
shouldAnswer(message);
}
}
}
} |
Je pense que le problème est lié à l'utilisation simultanée de l'itérateur et à la modification de la liste (this.getAuteursMessagesLus().add(auteur);), mais je ne vois pas comment le résoudre.
Merci d'avance pour votre aide.
Emilie