我迭代一个ArrayList.如果我使用旧的时尚方式:
for (int i = 0; i < list.size(); i++)
{
list.get(i).update();;
}
Run Code Online (Sandbox Code Playgroud)
它运行正常.但有了这个:
for (Baseitem item : list)
{
item.update();
}
Run Code Online (Sandbox Code Playgroud)
它在第一行失败,在ArrayList类中:线程"AWT-EventQueue-0"中的异常java.util.ConcurrentModificationException是的,我在外面删除项目 - 但在迭代时肯定不会.怎么解决这个?我不使用任何线程.
在迭代该列表时,应避免修改列表中的元素.
使用for (int i...)循环,您不会迭代列表,因此您可以修改其中的元素.
在for (Baseitem item : list)循环中,您正在迭代列表,因此修改列表元素将引发ConcurrentModificationException异常.
如果要修改其中的元素,则必须使用循环的第一种形式.