可能重复:
Concurrent modification error when adding elements to LinkedList
我是一个链表的arraylist
List<LinkedList<File1>> backup = new ArrayList<LinkedList<File1>>();
在运行时单击按钮我想从列表中删除少量元素并将其添加到其他列表中。 我也尝试将链表声明为
List<LinkedList<File1>> lists = Collections.synchronizedList(new ArrayList<LinkedList<File1>>());
bt仍然是错误保持不变。我无法弄清楚错误,我也是新的java所以PLZ做的帮助。 我的代码如下。
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);
}
}
答案 0 :(得分:1)
您正在浏览列表并修改无效的相同列表
itr.remove();
改为管理两个列表,并在迭代后将结果列表的效果应用于源列表
答案 1 :(得分:0)
从列表中删除对象时会发生错误,而迭代它时。
您可以将要删除的项目放在另一个列表中,并在迭代完第一个列表后调用firstlist.removeAll(list_with_items_to_remove)
。