【问题标题】:What is the difference between iterator and listIterator()? [duplicate]迭代器和 listIterator() 有什么区别? [复制]
【发布时间】:2012-06-14 05:47:30
【问题描述】:

可能重复:
difference between Iterator and 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();

【问题讨论】:

  • 8 分钟前提出了同样的问题。 :P
  • 您查看过IteratorListIterator 的Javadoc 吗?
  • @PéterTörök 实际上,ListIterator javadoc 本身就为您提供了作为子类型的差异。 ;)

标签: java list iterator


【解决方案1】:

ListIterator 是一个扩展Iterator 的子类。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      ListIterator:

      ListIterator 没有当前元素;它的光标位置始终位于调用 previous() 将返回的元素与调用 next() 将返回的元素之间。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2012-06-14
          • 2011-07-17
          • 2018-01-28
          • 2015-09-16
          • 2010-11-04
          • 2019-10-25
          • 2014-12-05
          • 2012-02-10
          • 2020-11-01
          相关资源
          最近更新 更多