迭代器中如何删除集合中的元素?
在迭代器中是不能直接对集合的进行增、删操作的。
比如一下代码:
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
Iterator<String> it = list.iterator();
while(it.hasNext()){
String s = it.next();
//list.add("d");//ConcurrentModificationException
//list.remove("a");//ConcurrentModificationException
}
}
}
运行结果如下:
程序报错了,出现了并发修改异常(ConcurrentModificationException)
但是,在迭代器中,可以使用迭代器的remove()方法删除集合中的元素,代码如下:
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
Iterator<String> it = list.iterator();
while(it.hasNext()){
String s = it.next();
if("a".equals(s)){
it.remove();
}
}
System.out.println(list);
}
}
运行结果:
[b, c]