package cn.lonecloud.Iterator;
import java.util.ArrayList;
import java.util.ListIterator;
public class myListIterator {
public static void main(String[] args) {
ArrayList<Integer> list=new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
//列表迭代器繼承的接口是Iterator
ListIterator<Integer> iterator=list.listIterator();
ListIterator<Integer> iterator2=list.listIterator();
/**
* Exception in thread "main" java.lang.IllegalStateException
at java.util.ArrayList$ListItr.set(ArrayList.java:941)
at cn.lonecloud.Iterator.myListIterator.main(myListIterator.java:14)
同樣會報錯,這個類里面的set和remove方法都需要和next()方法相結合使用
而且他的會改變的元素就是next()里面返回的元素
*/
iterator.next();
iterator.set(22);//
iterator.next();
iterator.remove();
/**
* Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at cn.lonecloud.Iterator.myListIterator.main(myListIterator.java:28)
由於改變了list里面的元素,導致這個迭代器混亂了,導致拋出異常
*/
while (iterator2.hasNext()) {
Integer integer = (Integer) iterator2.next();
System.out.println(integer);
}
}
}
ListIterator是繼承於Iterator的一個接口;
里面有set方法;
