public interface ListIterator<E> extends Iterator<E>
實(shí)現(xiàn)了Iterator的接口并拓展關(guān)于List的一些操作,前向迭代,后向迭代,刪除、修改、添加元素,獲取迭代游標(biāo)前向后向的索引位置
迭代游標(biāo)的位置
Element(0) Element(1) Element(2) ... Element(n-1)
cursor positions: ^ ^ ^ ^ ^
有n個(gè)元素就有n+1個(gè)游標(biāo)的位置,游標(biāo)的當(dāng)前位置上沒有元素,游標(biāo)的位置處于調(diào)用previous和next返回的兩個(gè)元素之間。
boolean hasNext();
E next();
返回當(dāng)前游標(biāo)的下一個(gè)元素,并將游標(biāo)的位置向后移動(dòng)一個(gè)元素的距離
boolean hasPrevious();
判斷當(dāng)前游標(biāo)是否還有上一個(gè)元素
E previous();
返回當(dāng)前游標(biāo)的上一個(gè)元素,并將游標(biāo)的位置向前移動(dòng)一個(gè)元素的距離
int nextIndex();
返回游標(biāo)的下一元素的索引,當(dāng)游標(biāo)位于最后一個(gè)元素的右邊,此時(shí)調(diào)用nextIndex則返回集合的size
int previousIndex();
返回游標(biāo)的上一元素的索引,當(dāng)游標(biāo)位于第一個(gè)元素的左邊,此時(shí)調(diào)用previousIndex則返回 -1
void remove();
刪除上次調(diào)用next或者previous返回的集合元素,在調(diào)用remove方法之前,如果沒有調(diào)用一次next或者previous方法,或者在調(diào)用了next、previous方法之后已經(jīng)調(diào)用過了remove方法或add方法,換句話說距離本次調(diào)用remove方法最近的方法不是next、previous則拋出IllegalStateException異常
void set(E e);
替換上一次調(diào)用next或previous集合的返回值,在調(diào)用set方法之前,如果沒有調(diào)用一次next或者previous方法,或者在調(diào)用了next、previous方法之后已經(jīng)調(diào)用過了remove方法或add方法,換句話說距離本次調(diào)用set方法最近的方法不是next、previous則拋出IllegalStateException異常
void add(E e);
插入元素到游標(biāo)的位置上,正好替代游標(biāo)位置,并將當(dāng)前游標(biāo)位置移動(dòng)到新元素和下一個(gè)元素之間,當(dāng)添加后調(diào)用next返回的是新元素的下一個(gè)元素,調(diào)用previous返回新元素,調(diào)用nextIndex或previous則增加1