Possible en double:
Concurrent modification error when adding elements to LinkedListcomment surmonter l'erreur ConcurrentModificationException
j'ai un arraylist de chaînée
List<LinkedList<File1>> backup = new ArrayList<LinkedList<File1>>();
lors de l'exécution sur cliquant sur un bouton je veux supprimer quelques éléments d'une liste et les ajouter dans une autre liste. J'ai aussi essayé de déclarer la liste chaînée comme
List<LinkedList<File1>> lists = Collections.synchronizedList(new ArrayList<LinkedList<File1>>());
bt toujours l'erreur reste le même. Je ne suis pas en mesure de comprendre l'erreur, je suis aussi nouveau à java donc plz faire de l'aide. Mon code est le suivant.
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// When delete button is clicked
int parent_node = 0, d =0 ;
File1 srt[] ;
File1 deleted[] = new File1[no_node];
Random randomGenerator = new Random();
int rand_no = 0;
while(rand_no == 0)
{
rand_no = randomGenerator.nextInt(no_node);
}
System.out.println("random no : " + rand_no);
for(i=0;i<backup.size();i++)
{
ListIterator itr = it_bk.get(i);
while(itr.hasNext())
{
File1 file = (File1) itr.next();
if(rand_no == file.nod)
{
parent_node = i;
itr.remove();
}
}
//iterating back
while(itr.hasPrevious())
{
File1 file = (File1) itr.previous();
}
}
System.out.println("Parent node:" + parent_node);
//add the nodes to parent
ListIterator itr1 = it_bk.get(rand_no);
System.out.println("randam node");
while(itr1.hasNext())
{
File1 file = (File1) itr1.next();
deleted[d] = new File1();
deleted[d] = file ;
d++;
//tmp_bk.add(file);
System.out.println("node :" + file.nod + "\tdist :" + file.dist);
}
LinkedList<File1> tmp_bk = backup.get(parent_node);
for(j=0;j<d;j++)
{
tmp_bk.add(deleted[j]);
System.out.println(deleted[j].nod + "\t" + deleted[j].dist);
}
//it_bk.add(tmp_bk.listIterator());
ListIterator itr_p = it_bk.get(parent_node);
System.out.println("parent node");
while(itr_p.hasNext())
{
File1 file = (File1) itr_p.next();
System.out.println("node :" + file.nod + "\tdist :" + file.dist);
}
}
vous ne pouvez pas modifier une liste en l'itérant sur elle. Penses-y. vous avez 5 objets et itérez dessus, alors vous en retirez 1. Vous rendez l'état de la liste incohérent. – zengr