集合5-ListIterator接口源码分析

public interface ListIterator extends Iterator

实现了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

你可能感兴趣的:(集合5-ListIterator接口源码分析)