public interface ListIterator<E> extends Iterator<E>
实现了Iterator的接口并拓展关于List的一些操作,前向迭代,后向迭代,删除、修改、添加元素,获取迭代游标前向后向的索引位置
迭代游标的位置
Element(0) Element(1) Element(2) ... Element(n-1)
cursor positions: ^ ^ ^ ^ ^
有n个元素就有n+1个游标的位置,游标的当前位置上没有元素,游标的位置处于调用previous和next返回的两个元素之间。
boolean hasNext();
E next();
返回当前游标的下一个元素,并将游标的位置向后移动一个元素的距离
boolean hasPrevious();
判断当前游标是否还有上一个元素
E previous();
返回当前游标的上一个元素,并将游标的位置向前移动一个元素的距离
int nextIndex();
返回游标的下一元素的索引,当游标位于最后一个元素的右边,此时调用nextIndex则返回集合的size
int previousIndex();
返回游标的上一元素的索引,当游标位于第一个元素的左边,此时调用previousIndex则返回 -1
void remove();
删除上次调用next或者previous返回的集合元素,在调用remove方法之前,如果没有调用一次next或者previous方法,或者在调用了next、previous方法之后已经调用过了remove方法或add方法,换句话说距离本次调用remove方法最近的方法不是next、previous则抛出IllegalStateException异常
void set(E e);
替换上一次调用next或previous集合的返回值,在调用set方法之前,如果没有调用一次next或者previous方法,或者在调用了next、previous方法之后已经调用过了remove方法或add方法,换句话说距离本次调用set方法最近的方法不是next、previous则抛出IllegalStateException异常
void add(E e);
插入元素到游标的位置上,正好替代游标位置,并将当前游标位置移动到新元素和下一个元素之间,当添加后调用next返回的是新元素的下一个元素,调用previous返回新元素,调用nextIndex或previous则增加1