集合框架--ListIterator接口

来源:互联网 发布:北邮网络教育登录系统 编辑:程序博客网 时间:2024/06/05 22:54

通过一段代码来学习List集合:

import java.util.ArrayList;import java.util.List;import java.util.Iterator;public class ListDemo{public static void main(String[] args){List list=new ArrayList();//创建一个List集合对象,用其子类实例化//在List集合中添加对象list.add("abc1");list.add("abc2");list.add("abc3");//迭代器取出List集合中的对象(注:在List中有一个独有的get方法也可以取出对象)Iterator it=list.iterator();while(it.hasNext()){Object obj=it.next();if(obj.equals("abc2")){list.add("abc9"); //使用集合操作数据}elseSystem.out.println("next:"+obj);}System.out.println(list);}}
运行结果:

抛出了ConcurrentModificationException(检测到对象的并发修改,但不允许这种修改时,抛出异常)。抛出异常的原因是迭代器在操作元素的过程中集合也在操作元素,他们同时修改元素导致迭代出了问题。所以在迭代过程中不要使用集合操作元素,容易出现异常。

Iterator接口下有一个子接口ListIterator(列表迭代器),这个子接口提供增删改查等多种方法。为了获取这个子接口,我们可以使用List接口中的listIterator()方法来获取列表迭代器(这个迭代器只有list集合有)。所以可以使用Iterator接口的子接口ListIterator来完成在迭代中对元素进行更多的操作。

修改代码:

import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class ListDemo{public static void main(String[] args){List list=new ArrayList();//创建一个List集合对象,用其子类实例化//在List集合中添加对象list.add("abc1");list.add("abc2");list.add("abc3");System.out.println("list:"+list);//获取列表迭代器对象ListIterator it=list.listIterator();while(it.hasNext()){Object obj=it.next();if(obj.equals("abc2")){it.add("abc9");  //不再使用集合,使用迭代器来操作数据}}System.out.println("list:"+list);}}
运行结果:


0 0
原创粉丝点击