集合框架(ListIterator)

来源:互联网 发布:java模拟器安卓版 编辑:程序博客网 时间:2024/06/05 10:49
/* Collection |---List:元素是有序的,并且元素可以重复,因为该集合体系有索引。 |---ArrayList:底层的数据结构使用的是数组结构。特点:查询速度快,但是增删稍慢。线程不同步。 |---LinkedList:底层的数据结构使用的是链表数据结构。特点:增删速度很快,查询稍慢。 |---Vector:底层是数组数据结构。线程同步,都较慢,出现较早,和ArrayList功能基本相同。被ArrayList取代了。 List集合特有的迭代器ListIterator是Iterator接口。 在迭代时,不可以通过集合对象的方法操作集合中的元素, 因为会发生ConcurrentModificationException异常。 所以在迭代时,只能用迭代器的方法操作元素,可以Iterator方法时有限的。 只能对元素进行判断,取出和删除的操作, 如果想要其他的操作方法,如添加、修改等,就需要使用其子接口 ListIterator。 该接口只能通过List集合的ListIterator方法获取。 */import java.util.ArrayList;import java.util.Iterator;import java.util.ListIterator;public class ListIteratorDemo {public static void main(String[] args) {//演示列表迭代器ArrayList al=new ArrayList();al.add("java01");al.add("java02");al.add("java03");ListIterator li=al.listIterator();while(li.hasNext()){Object obj=li.next();if(obj.equals("java02")){//增加元素li.add("java008");}if(obj.equals("java03")){//修改元素li.set("java007");}}System.out.println(al);System.out.println(li.hasNext());   //判断迭代后面是否有元素System.out.println(li.hasPrevious());  //判断迭代前面是否有元素//在迭代过程中准备添加或者删除元素Iterator it=al.iterator();while(it.hasNext()){Object obj=it.next();if(obj.equals("java02")){//al.add("java008"); 这样做不对it.remove(); //将java02的引用从集合中删除了,但是Object还在引用,所以在Object中可以打印出来。}System.out.println("obj:"+obj);}System.out.println("删除元素后的集合为:"+al);}}


结果图:


4 0