package com.test;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
// 迭代器在变量元素的时候要注意事项:
// 在迭代器迭代元素的过程中,不允许使用集合对象改变集合中的元素的个数(也就是添加或者删除),可以进行修改
// 如果需要添加或者删除只能使用迭代器的方法进行操作
// 如果使用集合对象在迭代的过程中改变集合的元素个数,会出现异常 java.util.ConcurrentModificationException
// 迭代器迭代的过程:就是迭代器从创建开始,到最后一次使用的过程中。
public class Iter {
public static void main(String[] args) {
List list=new ArrayList();
list.add("刘备");
list.add("曹操");
list.add("孙权");
// ListIterator为List接口中特有的迭代器ListIterator,该迭代器继承Iterator
ListIterator it=list.listIterator();
while(it.hasNext()) {
System.out.print(it.next()+",");
it.add("aaa"); //在迭代过程中,迭代器调用了添加方法,会将迭代器的指针向下移动一个单位。为了防止死循环
//list.add("bbb"); //在迭代过程中,不能用集合对象对集合进行修改,会直接抛出异常( java.util.ConcurrentModificationException)
} // 刘备,曹操,孙权,
System.out.println();
System.out.println(list); //[刘备, aaa, 曹操, aaa, 孙权, aaa]
ListIterator it2=list.listIterator();
it2.next(); //最后一次使用
list.add("aaa"); //这种写法可以
System.out.println(list); //[刘备, aaa, aaa, 曹操, aaa, 孙权, aaa]
ListIterator it3=list.listIterator();
list.add("aaa"); //这种写法不可以,因为在迭代过程中使用了集合对象改变了集合元素的个数
it3.next(); //最后一次使用
System.out.println(list); //[刘备, aaa, aaa, 曹操, aaa, 孙权, aaa]
}
}
迭代器的工作原理和注意事项
最新推荐文章于 2022-07-03 17:44:46 发布