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 : Sélectionner tout - Visualiser dans une fenêtre à part
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