版本
JDK8(JDK1.8)
ListIterator接口源码重点
1.ListIterator接口继承Iterator接口,是Iterator接口的扩展版,ListIterator允许沿着两个方向遍历列表(向后next()和向前previous()),同时比Iterator,多了set(.),add(.)方法用于在光标处替换和添加元素
Iterator源码可以看我这篇文章 Iterator
2.ListIterator没有当前元素,只有一个光标位置,其光标位置始终位于调用previous()返回的元素和调用next()返回的元素之间
3.ListIterator接口方法
方法名 | 作用 |
---|---|
boolean hasNext() | 如果此列表迭代器向后遍历列表时还有剩余元素,则返回true |
E next() | 返回列表中的下一个元素 |
boolean hasPrevious(); | 如果此列表迭代器向前遍历列表时还有剩余元素,则返回true |
E previous() | 返回列表中的上一个元素 |
int nextIndex() | 返回的是下一次调用的next返回的元素的索引 |
int previousIndex() | 返回的是下一次调用的previous返回的元素的索引 |
void remove() | 从列表中删除next或previous返回的最后一个元素 |
void set(E e) | 将next或previous返回的最后一个元素替换为指定的元素 |
void add(E e) | 将指定的元素插入列表 |
注意:
- 交替调用next()和previous()方法将重复返回相同的元素
- remove()和set()方法必须在调用next或previous后,且remove或add或set均未被调用时,才能调用,即remove()和set()方法无法在一次next或previous后多次调用,且之间会相互影响,一个方法调用了另一个方法不能调用
- add(.)对next()和previous()方法影响不同,调用add(.)后对next的后续调用将不受影响,对previous的后续调用将返回新元素,
- add(.)会使得下次调用的nextIndex()或previousIndex()两者返回值都增加1
ListIterator接口源码
package java.util;
/**
* An iterator for lists that allows the programmer
* to traverse the list in either direction, modify
* the list during iteration, and obtain the iterator's
* current position in the list. A {@code ListIterator}
* has no current element; its <I>cursor position</I> always
* lies between the element that would be returned by a call
* to {@code previous()} and the element that would be
* returned by a call to {@code next()}.
* An iterator for a list of length {@code n} has {@code n+1} possible
* cursor positions, as illustrated by the carets ({@code ^}) below:
* 列表的迭代器,允许程序员沿任意方向遍历列表,
* 在迭代过程中修改列表,并获取迭代器在列表中的当前位置。
*