public interface ListIterator<E> extends Iterator<E>
ListIterator
没有电流元素;
其光标位置始终位于通过调用previous()
返回的元素和通过调用next()
返回的元素next()
。
长度为n
的列表的迭代器具有n+1
可能的光标位置,如下图所示的^
( ^
)所示:
Element(0) Element(1) Element(2) ... Element(n-1)
cursor positions: ^ ^ ^ ^ ^
请注意, remove()
和set(Object)
方法未按光标位置进行定义;
它们被定义为对调用next()
或previous()
返回的最后一个元素进行操作。
此接口是成员Java Collections Framework 。
Collection
, List
, Iterator
, Enumeration
, List.listIterator()
Modifier and Type | Method and Description |
---|---|
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)
|
forEachRemaining
boolean hasNext()
true
如果遍历正向列表,列表迭代器有多个元素。
(换句话说,返回true
如果next()
将返回一个元素而不是抛出异常。)
E next()
next
在接口
Iterator<E>
NoSuchElementException
- 如果迭代没有下一个元素
boolean hasPrevious()
true
如果遍历反向列表,列表迭代器有多个元素。
(换句话说,如果previous()
将返回一个元素而不是抛出异常,则返回true
)。
true
如果列表迭代器在相反方向遍历列表时具有更多的元素
E previous()
NoSuchElementException
- 如果迭代没有以前的元素
int nextIndex()
next()
。
(如果列表迭代器位于列表的末尾,则返回列表大小。)
next
,如果列表迭代器位于列表的末尾,
next
列表大小
int previousIndex()
previous()
返回的元素的索引。
(如果列表迭代器位于列表的开头,则返回-1)
previous
,如果列表迭代器位于列表的
previous
,则为-1
void remove()
next()
或previous()
返回的最后一个元素(可选操作)。
这个电话只能拨打next
或previous
。
只有在最后一次致电next
或previous
之后尚未调用add(E)
,才可以做出。
remove
在界面
Iterator<E>
UnsupportedOperationException
-如果
remove
操作不受此列表迭代器支持
IllegalStateException
- 如果
next
和
previous
都没有被调用,或者
remove
或
add
在上次调用
next
调用了
next
或
previous
void set(E e)
next()
返回的最后一个元素或previous()
。
此调用可制成只有既不remove()
也不add(E)
一直到最后一次通话后称为next
或previous
。
e
- 用于替换由
next
或
previous
返回的最后一个元素的元素
UnsupportedOperationException
-如果
set
操作不受此列表迭代器支持
ClassCastException
- 如果指定元素的类阻止将其添加到此列表中
IllegalArgumentException
- 如果指定元素的某些方面阻止将其添加到此列表中
IllegalStateException
- 如果
next
和
previous
都没有被调用,或者
remove
或
add
在上次调用
next
调用了
next
或
previous
void add(E e)
next()
,如果有的话,那会被返回的元素之后previous()
,如果有的话。
(如果列表不包含元素,则新元素将成为列表中的唯一元素。)新元素插入隐式游标之前:后续调用next
将不受影响,后续调用previous
将返回新元素。
(此呼叫将增加一个呼叫将返回的值为nextIndex
或previousIndex
)。
e
- 要插入的元素
UnsupportedOperationException
- 如果此列表迭代器不支持
add
方法
ClassCastException
- 如果指定元素的类阻止将其添加到此列表中
IllegalArgumentException
- 如果此元素的某些方面阻止将其添加到此列表