package chapter11.t3;
import java.util.ArrayList;
import java.util.ListIterator;
public class ListIteratorTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
System.out.println(list);
/*
* listIterator方法返回内部类ListItr的对象
*
* public ListIterator<E> listIterator() { return new ListItr(0); }
*
* 内部类的构造方法:
*
* ListItr(int index) { super(); cursor = index; }
*/
ListIterator<String> iterator = list.listIterator();
/*
* public boolean hasPrevious() { return cursor != 0; }
*
* 所以输出false
*/
System.out.println(iterator.hasPrevious());
/*
* public boolean hasNext() { return cursor != size; }
*
* cursor == size表示当前是最后的位置了,后面没有元素了
*/
while (iterator.hasNext()) {
/*
* public E next() {
* checkForComodification();
* int i = cursor;
* if (i >= size)
* throw new NoSuchElementException();
* Object[] elementData = ArrayList.this.elementData;
* if (i >= elementData.length)
* throw new ConcurrentModificationException();
* cursor = i + 1;
* return (E) elementData[lastRet = i];
* }
*
* 每调用next()方法一次,cursor作为指针,向后移动一格
*/
iterator.next();
}
/*
* public boolean hasPrevious() {
return cursor != 0;
}
* cursor==0的时候,表示当前已经是最前面的位置,前面没有元素了
*/
while (iterator.hasPrevious()) {
/*
* public E previous() {
checkForComodification();
int i = cursor - 1;
if (i < 0)
throw new NoSuchElementException();
Object[] elementData = ArrayList.this.elementData;
if (i >= elementData.length)
throw new ConcurrentModificationException();
cursor = i;
return (E) elementData[lastRet = i];
}
* 每调用previous()方法一次,cursor作为指针,向前移动一格
*/
System.out.println(iterator.previous());
iterator.remove();
System.out.println(list);
}
}
}