1.首先建立集合java
2.使用集合对象添加元素sql
3.建立Iterator对象,并进行循环遍历bash
public class Test {
public static void main(String[] args) {
//建立集合对象
ArrayList<String> al = new ArrayList<String>();
//添加元素
al.add("hello");
al.add("world");
al.add("java");
//建立Iterator对象
Iterator it = al.iterator();
while(it.hasNext()){ //判断集合中是否会有下一个元素
String str = (String) it.next();
//在此添加一个添加,若是输出到了"world"就再为集合添加"sql"元素
if("world".equals(str)){
al.add("sql");
}
}
System.out.println(al);
}
}
复制代码
这时你会发现程序会出现ConcurrentModificationException异常spa
错误的缘由:在使用iterator遍历集合时,咱们又使用ArrayList对象向集合中添加元素形成的。code
解决方式:经过使用ListIterator接口的迭代器解决cdn
public class Test {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("hello");
al.add("world");
al.add("java");
//ListIterator是Iterator的扩展
ListIterator<String> li = al.listIterator();
while(li.hasNext()){
String str = li.next();
if("world".equals(str)){
li.add("sql");
}
}
System.out.println(al);
}
}
复制代码
这里须要注意add()方法要使用ListIterator的迭代器对象进行添加对象
这样问题就完美的解决了blog