ListIterator
public interface ListIterator<E>
extends Iterator<E>
列表的迭代器,允许程序员在任一方向遍历列表,在迭代期间修改列表,并获取迭代器在列表中的当前位置。 ListIterator 没有当前元素; 它的光标位置始终位于调用 previous() 将返回的元素与调用 next() 将返回的元素之间。 长度为 n 的列表的迭代器有 n+1 个可能的光标位置,如下面的插入符号 (^) 所示:
Element(0) Element(1) Element(2) ... Element(n-1)
cursor positions: ^ ^ ^ ^ ^
请注意,remove() 和 set(java.lang.Object) 方法不是根据光标位置定义的; 它们被定义为对调用 next() 或 previous() 返回的最后一个元素进行操作。
此接口是 Java 集合框架的成员。
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
void | add(E e) | 将指定元素插入列表(可选操作)。 |
boolean | hasNext() | 如果此列表迭代器在向前遍历列表时具有更多元素,则返回 true。 |
boolean | hasPrevious() | 如果此列表迭代器在反向遍历列表时具有更多元素,则返回 true。 |
E | next() | 返回列表中的下一个元素并前进光标位置。 |
int | nextIndex() | 返回将由后续调用 next() 返回的元素的索引。 |
E | previous() | 返回列表中的前一个元素并将光标位置向后移动。 |
int | previousIndex() | 返回将由后续调用 previous() 返回的元素的索引。 |
void | remove() | 从列表中删除 next() 或 previous() 返回的最后一个元素(可选操作)。 |
void | set(E e) | 将 next() 或 previous() 返回的最后一个元素替换为指定元素(可选操作)。 |
从接口 java.util.Iterator 继承的方法 |
---|
forEachRemaining |
方法详情
hasNext
boolean hasNext()
如果此列表迭代器在向前遍历列表时具有更多元素,则返回 true。 (换句话说,如果 next() 将返回一个元素而不是抛出异常,则返回 true。)
指定者:
接口 IteratorE 中的 hasNext
返回:
如果在向前遍历列表时列表迭代器有更多元素,则为 true
next
E next()
返回列表中的下一个元素并前进光标位置。 可以重复调用此方法以遍历列表,或与调用 previous() 混合以来回移动。 (请注意,交替调用 next 和 previous 将重复返回相同的元素。)
指定者:
接口 IteratorE 中的下一个
返回:
列表中的下一个元素
Throws:
Throw名称 | Throw描述 |
---|---|
NoSuchElementException | 如果迭代没有下一个元素 |
hasPrevious
boolean hasPrevious()
如果此列表迭代器在反向遍历列表时具有更多元素,则返回 true。 (换句话说,如果 previous() 将返回一个元素而不是抛出异常,则返回 true。)
返回:
如果在反向遍历列表时列表迭代器有更多元素,则返回 true
previous
E previous()
返回列表中的前一个元素并将光标位置向后移动。 可以重复调用此方法以向后迭代列表,或与调用 next() 混合以来回遍历。 (请注意,交替调用 next 和 previous 将重复返回相同的元素。)
返回:
列表中的前一个元素
Throws:
Throw名称 | Throw描述 |
---|---|
NoSuchElementException | 如果迭代没有前一个元素 |
nextIndex
int nextIndex()
返回将由后续调用 next() 返回的元素的索引。 (如果列表迭代器位于列表末尾,则返回列表大小。)
返回:
后续调用 next 将返回的元素的索引,如果列表迭代器位于列表末尾,则为列表大小
previousIndex
int previousIndex()
返回将由后续调用 previous() 返回的元素的索引。 (如果列表迭代器位于列表的开头,则返回 -1。)
返回:
后续调用 previous 时将返回的元素的索引,如果列表迭代器位于列表的开头,则返回 -1
remove
void remove()
从列表中删除 next() 或 previous() 返回的最后一个元素(可选操作)。 每次调用下一个或上一个时,此调用只能进行一次。 只有在最后一次调用 next 或 previous 之后没有调用 add(E) 时,才能执行此操作。
指定者:
在接口 IteratorE 中删除
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此列表迭代器不支持删除操作 |
IllegalStateException | 如果 next 和 previous 都没有被调用,或者在最后一次调用 next 或 previous 之后没有调用 remove 或 add |
set
void set(E e)
将 next() 或 previous() 返回的最后一个元素替换为指定元素(可选操作)。 只有在最后一次调用 next 或 previous 之后既没有调用 remove() 也没有调用 add(E) 时,才能进行此调用。
参数:
参数名称 | 参数描述 |
---|---|
e | 用于替换 next 或 previous 返回的最后一个元素的元素 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此列表迭代器不支持 set 操作 |
ClassCastException | 如果指定元素的类阻止它被添加到这个列表中 |
IllegalArgumentException | 如果指定元素的某些方面阻止它被添加到此列表中 |
IllegalStateException | 如果 next 和 previous 都没有被调用,或者在最后一次调用 next 或 previous 之后没有调用 remove 或 add |
add
void add(E e)
将指定元素插入列表(可选操作)。 该元素被插入到 next() 将返回的元素(如果有)之前,以及在 previous() 将返回的元素(如果有)之后。 (如果列表不包含任何元素,则新元素将成为列表中的唯一元素。)新元素插入到隐式光标之前:对 next 的后续调用将不受影响,对 previous 的后续调用将返回新元素 . (此调用将调用 nextIndex 或 previousIndex 返回的值加一。)
参数:
参数名称 | 参数描述 |
---|---|
e | 要插入的元素 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此列表迭代器不支持 add 方法 |
ClassCastException | 如果指定元素的类阻止它被添加到这个列表中 |
IllegalArgumentException | 如果此元素的某些方面阻止它被添加到此列表中 |