当使用ArrayList的迭代器进行遍历时,如果在遍历过程中对ArrayList进行了结构性修改(比如添加或删除元素),就会抛出ConcurrentModificationException异常。
解决这个问题的方法是使用迭代器的remove()方法进行删除操作,而不是直接对ArrayList进行修改。
以下是一个示例代码:
import java.util.ArrayList;
import java.util.Iterator;
public class Example {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("B")) {
iterator.remove(); // 使用迭代器的remove()方法删除元素
}
}
System.out.println(list); // 输出 [A, C]
}
}
在上面的示例中,我们使用迭代器遍历ArrayList,并在遍历过程中使用迭代器的remove()方法删除了元素"B"。这样就避免了ConcurrentModificationException异常的抛出,并且成功地删除了指定的元素。
需要注意的是,如果使用ArrayList的remove()方法直接删除元素,而不是使用迭代器的remove()方法,同样会引发ConcurrentModificationException异常。