集合之List中的列表迭代器
阿新 • • 發佈:2018-11-06
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:反向遍歷。