迭代器在进行迭代时会将原数据进行拷贝,在新的 数据上面进行迭代,并添加对应的标记。而List接口 的删除方法,是在原数据上面直接进行删除操作, java不允许这个操作。迭代器的删除方法,是在新 拷贝出来的数据上进行删除操作,并且添加对应的 标记,最后合并后统一进行原数据上的删除。同 理,一边迭代一边增加数据java也是不允许的。 增强for循环也不能一边循环遍历一边删除(添加)数 据内容。
package cn.tedu.listdemo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
System.out.println(list);
// 获取迭代器
Iterator<String> it = list.iterator();
// 判断是否有下一个元素
while (it.hasNext()){
String s = it.next();
// list接口的删除方法
// list接口的删除方法不支持一边遍历一边删除
// list.remove(s);
// 迭代器的删除方法
// 删除的就是it.next()的这个元素
it.remove();
// System.out.println(it.next());
}
System.out.println(list);
}
}