Mögliche Duplizieren:
Concurrent modification error when adding elements to LinkedListwie ConcurrentModificationException Fehler zu überwinden
Ich habe eine Arraylist von LinkedList
List<LinkedList<File1>> backup = new ArrayList<LinkedList<File1>>();
während der Laufzeit auf einen Knopf klicken i entfernen möchten einige Elemente aus einer Liste und die fügen sie in andere Liste. Ich habe versucht, auch die verknüpfte Liste erklärt als
List<LinkedList<File1>> lists = Collections.synchronizedList(new ArrayList<LinkedList<File1>>());
bt der Fehler gleich bleibt. Ich bin nicht in der Lage, den Fehler herauszufinden, ich bin auch neu in Java, also plz helfen. Mein Code ist wie folgt.
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);
}
}
Sie können eine Liste nicht ändern, während Sie darüber iterieren. Denk darüber nach. Du hast 5 Items und iterierst darüber, dann entfernst du 1 Item. Sie machen den Status der Liste inkonsistent. – zengr