繁体   English   中英

迭代器和列表迭代器的区别?

[英]Difference between Iterator and Listiterator?

Iterator ite = Set.iterator();
Iterator ite = List.iterator();

ListIterator listite = List.listIterator();

我们可以使用Iterator来遍历SetListMap 但是ListIterator只能用于遍历List ,不能遍历Set 为什么?

我知道主要的区别在于,使用迭代器我们只能在一个方向上行驶,而使用ListIterator我们可以在两个方向上行驶。 还有其他区别吗? ListIteratorIterator什么优势?

差异在ListIterator的 Javadoc 中列出

你可以

  • 向后迭代
  • 在任何时候获取迭代器。
  • 在任何时候添加一个新值。
  • 在该点设置一个新值。

有两个区别:

  1. 我们可以使用 Iterator 来遍历 Set 和 List 以及 Map 类型的对象。 虽然 ListIterator 可用于遍历 List 类型的对象,但不适用于 Set 类型的对象。

    也就是说,我们可以通过使用 Set 和 List 来获取一个 Iterator 对象,参见这里:

    通过使用迭代器,我们可以仅向前检索集合对象中的元素。

    迭代器中的方法:

    1. hasNext()
    2. next()
    3. remove()
     Iterator iterator = Set.iterator(); Iterator iterator = List.iterator();
  2. 但是我们只能从 List 接口获取 ListIterator 对象,请看这里:

    其中 ListIterator 允许您在任一方向(向前和向后)遍历。 因此,除了 Iterator 的方法hasPrevious()它还有两个方法,如hasPrevious()previous() 此外,我们可以获取下一个或上一个元素的索引(分别使用nextIndex()previousIndex()

    ListIterator 中的方法:

    1. 有下一个()
    2. 下一个()
    3. 以前的()
    4. 有上一个()
    5. 消除()
    6. 下一个索引()
    7. 以前的索引()
     ListIterator listiterator = List.listIterator();

    即,我们无法从 Set 接口获取 ListIterator 对象。

参考: - Iterator 和 ListIterator 之间有什么区别?

Iterator 是 ListIterator 的超类。

以下是它们之间的区别:

  1. 使用iterator您只能向前移动,但使用ListIterator您也可以在读取元素时向后移动。
  2. 使用ListIterator您可以在遍历时随时获取索引,而使用iterator则无法实现。
  3. 使用iterator您只能检查下一个元素是否可用,但在listiterator您可以检查上一个和下一个元素。
  4. 使用listiterator您可以在遍历的任何时间点添加新元素。 iterator不可能。
  5. 使用listiterator您可以在遍历时修改元素,而iterator则无法做到这一点。

迭代器外观:

 public interface Iterator<E> {
    boolean hasNext();
    E next();
    void remove(); //optional-->use only once with next(), 
                         dont use it when u use for:each
    }

ListIterator 外观和感觉:

public interface ListIterator<E> extends Iterator<E> {
    boolean hasNext();
    E next();
    boolean hasPrevious();
    E previous();
    int nextIndex();
    int previousIndex();
    void remove(); //optional
    void set(E e); //optional
    void add(E e); //optional
}

ListIterator优于Iterator优点是我们可以使用ListIterator 遍历列表的任何时间添加元素

下面是iterator和listIterator的区别

迭代器:

boolean hasNext();
E next();
void remove();

列表迭代器:

boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void remove();
void set(E e);
void add(E e);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM