当使用迭代器对集合进行遍历时,如果此时对集合进行改动,就会产生CocurrentModificationException异常。
比如
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
Iterator<String> it = list.iterator();
while(it.hasNext())
{
if(it.next().equals("a"))
list.add("d");
}
}
以上代码会产生java.util.ConcurrentModificationException。(并发修改异常)
解决此异常有两种方法:
1、迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)
代码修改为:
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
ListIterator<String> lt = list.listIterator(); //获取迭代器(List集合特有的)
while(lt.hasNext())
{
if(lt.next().equals("a"))
lt.add("d");
}
}
2、用集合遍历元素,用集合修改元素(用for循环遍历list)