iterator和listIterator()有什么区别?

时间:2012-06-11 10:10:25

标签: java list iterator

  

可能重复:
  difference between Iterator and Listiterator?

最近,当我通过javadocs goint时,我在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 个答案:

答案 0 :(得分:6)

ListIterator是一个扩展Iterator的子类。

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

答案 1 :(得分:4)

使用ListIterator,您可以在列表上向前和向后遍历,而只能使用Iterator向前遍历。另一方面,ListIterator仅用于列表,但Iterator用于map,set和list。

答案 2 :(得分:1)

ListIterator

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

答案 3 :(得分:1)

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