面试题 ConcurrentModificationException:并发修改异常
这是个什么异常,怎么产生的,怎么解决的?
有关案例看 package Homework; public class Homework
怎么产生:
当我们通过迭代器迭代元素的过程中,又通过集合去添加了元素。这种情况是不允许的。
因为迭代器是依赖于集合存在的,如果集合发生改变,迭代器也应该相应的发生改变。
而我们目前看到的却是,迭代器没变,集合变了。所以,报出了一个并发修改异常。
注意问题:通过迭代器遍历集合的时候,是不能通过集合去操作(添加,删除)。
解决办法:
A:全部通过迭代器操作:元素是添加到刚遍历的那个元素后面。
通过迭代器迭代的时候,可以通过迭代器对集合进行操作。
B:全部通过集合操作:元素是添加到最后的。
通过集合普通for遍历的时候,可以通过集合去操作。 |
|