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]
*/

Iterator中的remove()方法详解-Java


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异常原因和解决方法