1. 程式人生 > >集合之List中的列表迭代器

集合之List中的列表迭代器

List集合特有的迭代器,ListIterator是Iterator是Iterator的子介面
在迭代式,不可以通過集合物件的方法操作集合中的元素
因為會發生ConcurrentModificationException異常

所以,在迭代器時,只能用迭代器的方法操作元素,可是Itereator方法是有限的,如果想要其他的操作如新增、修改等,就需要使用其子介面,ListIterator

該介面只能通過List集合的ListIterator方法獲取。

這是由問題的程式碼
package myclass;
import java.util.*;

class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();

     al.add("java01");
     al.add("java03");
     al.add("java04");
   
      sop(al);
      
 Iterator it = new iterator();

//在迭代過程中,新增、刪除元素。
while(it.hasNext())
{
Object obj = it.next();//當一邊向外取
if(obj.equals(“java02”))
//al.add(“java08”); //這邊向內加,就會出現併發性修改,就會出現異常
it.remove();//將java02的引用從集合中刪除(引用)
sop(“obj=” + obj);
}
sop(al);//在這裡會被列印,因為Obj正在使用。
}
}

這是正確的
package myclass;
import java.util.*;

class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();

       al.add("java01");
       al.add("java02");
       al.add("java03");
       al.add("java04");

       sop(al);

     ListIterator  li = al.listIterator();
     while(li.hasNext())
      {
           Object obj = li.next();
           if(obj.equals("java02"))
             // li.add("java009");
              li.set("java06");
               
       }

         sop(al);
 }
  public static void sop(Object obj)
  {
       System.out.println(obj);
   }

}

previous:反向遍歷。