Iterator中的remove()方法详解-Java
对于Iterator中的remove()方法,若使用不当,则会报错,想要熟练使用remove()方法来删除元素需要深入理解该方法.
文章目录
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorRemoveDemo {
public static void main(String[] args) {
List list = new ArrayList(5);
for (int i = 0; i < 5; i++) {
list.add(i);
}
System.out.println(list);
// 移除最后访问的元素
iterator.next();
iterator.next();
iterator.remove();
System.out.println(list);
}
}
/*输出:
[0, 1, 2, 3, 4]
[0, 2, 3, 4]
*/
remove()方法
该方法移除的是iterator.next()方法最后访问的元素.
删除集合中的所有元素
while(iterator.hasNext()) {//通过遍历来删除list中所有元素
iterator.next();
iterator.remove();
}
通过遍历集合元素,来依次删除该集合中的元素.当然也可以添加控制条件,来删除集合中想要删除的元素.
java.lang.IllegalStateException异常
( 如果 next方法尚未被调用,或者 remove方法在上次调用 next方法之后已经被调用 )
- 直接使用remove方法,而未调用next()方法.
- 当调用next()方法之后,使用了remove()方法,但是接着又使用remove(),则会出现该错误.
java.util.NoSuchElementException异常
如果迭代没有更多的元素在集合遍历时,连续用两次iterator.next()方法会导致出现该错误.
Java ConcurrentModificationException异常
关于这个异常,请祥看这篇文章,该文章对于jdk源码进行了深入分析,写得很好.
Java ConcurrentModificationException异常原因和解决方法