Iterator和Listiterator之间的区别?

Iterator ite = Set.iterator(); Iterator ite = List.iterator(); ListIterator listite = List.listIterator(); 

我们可以使用Iterator来遍历一个Set或一个List或一个Map 。 但是ListIterator只能用来遍历一个List ,它不能遍历一个Set 。 为什么?

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

Javadoc中列出了ListIterator中的差异

您可以

  • 向后迭代
  • 在任何时候获得迭代器。
  • 在任何时候添加一个新的值。
  • 在这一点上设置一个新的价值。

有两个区别:

  1. 我们可以使用Iterator来遍历Set和List以及Map对象的types。 虽然可以使用ListIterator来遍历Listtypes的对象,但不能用于Set-type的对象。

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

    通过使用Iterator,我们只能从正面方向从Collection Object中检索元素。

    迭代器中的方法:

    1. hasNext()
    2. next()
    3. remove()
     Iterator iterator = Set.iterator(); Iterator iterator = List.iterator(); 
  2. 但是我们仅从List接口获得ListIterator对象,请参阅:

    作为一个ListIterator允许你在任何方向(向前和向后)遍历。 所以它有另外两个方法,像hasPrevious()previous()而不是Iterator的方法。 此外,我们可以获得下一个或上一个元素的索引(分别使用nextIndex()previousIndex()

    ListIterator中的方法:

    1. hasNext()
    2. 下一个()
    3. 以前()
    4. hasPrevious()
    5. 去掉()
    6. nextIndex()
    7. previousIndex()
     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 遍历列表添加元素

迭代器和ListIterator的区别

  1. 我们可以使用Iterator来遍历Set和List以及Map对象的types。 但是List Iterator可以用来遍历Listtypes的对象,但不能用于Settypes的对象。

也就是说,我们可以使用Set和List来获得一个Iterrator对象,参见:

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

但是我们仅从List接口获取List Iterator对象,请参见:

 ListIterator listite = List.listIterator(); 

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

  1. 通过使用Iterator,我们只能从正面方向从Collection Object中检索元素。

    • 在那里作为List Iterator,它允许你在任何方向上遍历。 那就是List迭代器遍历两个方向。 所以它有另外一个方法hasPrevious()previous()而不是Iterator。