1

可能重复:
Iterator 和 Listiterator 之间的区别?

最近,在浏览javadocs时,我在List接口中发现了两个方法:iterator()listIterator()。除了返回类型不同,这两种方法还有什么不同?下面是这两种方法的 java 文档。

// List Iterators
/**
 * Returns a list iterator over the elements in this list (in proper
 * sequence).
 *
 * @return a list iterator over the elements in this list (in proper
 *         sequence)
 */
ListIterator<E> listIterator();

/**
 * Returns an iterator over the elements in this list in proper sequence.
 *
 * @return an iterator over the elements in this list in proper sequence
 */
Iterator<E> iterator();
4

4 回答 4

6

ListIterator是一个扩展Iterator的子类。

ListIterator允许双向遍历,而不仅仅是检查是否有更多元素 ( hasNext()) 并获取下一个元素 ( next())。它维护一个光标位置并调用next()并将previous()更改该位置并返回相关值。 ListIterator还允许添加 ( add(E e)) 条目,并将条目 ( set(E e)) 设置到基础列表(与仅允许删除的 Iterator 不同)。

于 2012-06-11T10:13:08.713 回答
4

使用 ListIterator,您可以向前和向后遍历列表,而使用 Iterator 只能向前遍历。另一方面,ListIterator 仅用于列表,但 Iterator 用于映射、集合和列表。

于 2012-06-11T10:17:55.530 回答
1

列表迭代器

ListIterator 没有当前元素;它的光标位置总是位于调用previous()返回的元素和调用next()返回的元素之间。

于 2012-06-11T10:13:45.077 回答
1

ListIterator只是普通Iterator的扩展,允许您在任一方向遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置。

于 2012-06-11T10:14:22.303 回答