JavaTM Platform
Standard Ed. 6

java.util
接口 ListIterator<E>

所有超级接口:
Iterator<E>

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(Object) 方法不是 根据光标位置定义的;它们是根据对调用 next()previous() 所返回的最后一个元素的操作定义的。

此接口是 Java Collections Framework 的成员。

从以下版本开始:
1.2
另请参见:
Collection, List, Iterator, Enumeration, List.listIterator()

方法摘要
 void add(E e)
          将指定的元素插入列表(可选操作)。
 boolean hasNext()
          以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。
 boolean hasPrevious()
          如果以逆向遍历列表,列表迭代器有多个元素,则返回 true
 E next()
          返回列表中的下一个元素。
 int nextIndex()
          返回对 next 的后续调用所返回元素的索引。
 E previous()
          返回列表中的前一个元素。
 int previousIndex()
          返回对 previous 的后续调用所返回元素的索引。
 void remove()
          从列表中移除由 nextprevious 返回的最后一个元素(可选操作)。
 void set(E e)
          用指定元素替换 nextprevious 返回的最后一个元素(可选操作)。
 

方法详细信息

hasNext

boolean hasNext()
以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。

指定者:
接口 Iterator<E> 中的 hasNext
返回:
如果以正向遍历列表,列表迭代器有多个元素,则返回 true

next

E next()
返回列表中的下一个元素。可以重复调用此方法来迭代此列表,或混合调用 previous 来前后移动(注意交替调用 nextprevious 将重复返回相同的元素)。

指定者:
接口 Iterator<E> 中的 next
返回:
列表中的下一个元素。
抛出:
NoSuchElementException - 如果没有可迭代的下一个元素。

hasPrevious

boolean hasPrevious()
如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。(换句话说,如果 previous 返回一个元素而不是抛出异常,则返回 true)。

返回:
如果以逆向遍历列表,列表迭代器有多个元素,则返回 true

previous

E previous()
返回列表中的前一个元素。可以重复调用此方法来迭代列表,或混合调用 next 来前后移动(注意交替调用 nextprevious 将重复返回相同的元素)。

返回:
列表中的上一个元素。
抛出:
NoSuchElementException - 如果没有可迭代的上一个元素。

nextIndex

int nextIndex()
返回对 next 的后续调用所返回元素的索引。(如果列表迭代器在列表的结尾,则返回列表的大小)。

返回:
next 的后续调用所返回元素的索引,如果列表迭代器在列表的结尾,则返回列表大小。

previousIndex

int previousIndex()
返回对 previous 的后续调用所返回元素的索引。(如果列表迭代器在列表的开始,则返回 -1)。

返回:
previous 的后续调用所返回元素的索引,如果列表迭代器在列表的开始,则返回 -1。

remove

void remove()
从列表中移除由 nextprevious 返回的最后一个元素(可选操作)。对于每个 nextprevious 调用,只能执行一次此调用。只有在最后一次调用 nextprevious 之后,尚未调用 ListIterator.add 时才可以执行该调用。

指定者:
接口 Iterator<E> 中的 remove
抛出:
UnsupportedOperationException - 如果列表迭代器不支持 remove 操作。
IllegalStateException - 既没有调用 next 也没有调用 previous,或者在最后一次调用 nextprevious 后调用了 removeadd

set

void set(E e)
用指定元素替换 nextprevious 返回的最后一个元素(可选操作)。只有在最后一次调用 nextprevious 后既没有调用 ListIterator.remove 也没有调用 ListIterator.add 时才可以进行该调用。

参数:
e - 用于替换 nextprevious 返回的最后一个元素的元素。
抛出:
UnsupportedOperationException - 如果列表迭代器不支持 set 操作。
ClassCastException - 如果指定元素的类不允许该元素添加到此列表。
IllegalArgumentException - 如果指定元素的某个方面不允许该元素添加到此列表。
IllegalStateException - 如果既没有调用 next 也没有调用 previous,或者在最后一次调用 nextprevious 后调用了 removeadd

add

void add(E e)
将指定的元素插入列表(可选操作)。该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有);如果列表没有元素,那么新元素就成为列表中的唯一元素。新元素被插入到隐式光标前:不影响对 next 的后续调用,并且对 previous 的后续调用会返回此新元素(此调用把调用 nextIndexpreviousIndex 所返回的值增加 1)。

参数:
e - 要插入的元素。
抛出:
UnsupportedOperationException - 如果列表迭代器不支持 add 操作。
ClassCastException - 如果指定元素的类不允许该元素添加到此列表。
IllegalArgumentException - 如果此元素的某个方面不允许该元素添加到此列表。

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策