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方法;