Iterator常用在集合的遍历功能中,它与增强for有着异曲同工之妙。但在使用中也许会碰到ConcurrentModificationException(也就是并发修改异常)。举个例子;
List list = new ArrayList();
list.add("hello");
list.add("world");
Iterator it = list.iterator();
While(it.hasNext()){
String s = (String) it.next();
if(("hello").equals(s)){
list.add("abc");
}
}
此代码中就会出现并发修改异常,应为迭代器是依赖集合存在,集合发生变化,迭代器不发生变化是不容许的。
解决次异常两种方式分别为完全通过集合实现(普通for循环再结合get方法完成) 第二种是完全通过迭代器实现(只需将Iterator it = list.iterator();改为ListIterator it = list.listIterator();即可)。此问题也是面试中的常见问题,给大家分享下。, |