Iterator和Listiterator之间的区别?
Iterator ite = Set.iterator(); Iterator ite = List.iterator(); ListIterator listite = List.listIterator();
我们可以使用Iterator来遍历一个Set或一个List或一个Map 。 但是ListIterator只能用来遍历一个List ,它不能遍历一个Set 。 为什么?
我知道主要的区别在于,使用迭代器我们只能在一个方向上移动,但是使用ListIterator我们可以在两个方向上移动。 还有其他的区别吗? ListIterator和Iterator优点是什么?
Javadoc中列出了ListIterator中的差异
您可以
- 向后迭代
- 在任何时候获得迭代器。
- 在任何时候添加一个新的值。
- 在这一点上设置一个新的价值。
有两个区别:
-
我们可以使用Iterator来遍历Set和List以及Map对象的types。 虽然可以使用ListIterator来遍历Listtypes的对象,但不能用于Set-type的对象。
也就是说,我们可以使用Set和List来获得一个Iterator对象,参见:
通过使用Iterator,我们只能从正面方向从Collection Object中检索元素。
迭代器中的方法:
-
hasNext() -
next() -
remove()
Iterator iterator = Set.iterator(); Iterator iterator = List.iterator(); -
-
但是我们仅从List接口获得ListIterator对象,请参阅:
作为一个ListIterator允许你在任何方向(向前和向后)遍历。 所以它有另外两个方法,像
hasPrevious()和previous()而不是Iterator的方法。 此外,我们可以获得下一个或上一个元素的索引(分别使用nextIndex()和previousIndex())ListIterator中的方法:
- hasNext()
- 下一个()
- 以前()
- hasPrevious()
- 去掉()
- nextIndex()
- previousIndex()
ListIterator listiterator = List.listIterator();即,我们无法从Set接口获取ListIterator对象。
参考: – Iterator和ListIterator有什么区别?
Iterator是ListIterator的超类。
以下是他们之间的差异:
- 使用
iterator,只能向前移动,但使用ListIterator您还可以在读取元素时移动后置字。 - 使用
ListIterator您可以在遍历的任何时刻获取索引,这对iterator是不可能的。 - 使用
iterator你只能检查下一个元素是否可用,但是在listiterator你可以检查上一个元素和下一个元素。 - 使用
listiterator您可以在任何时间添加新的元素,而遍历。iterator不可能。 - 有了
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的区别
- 我们可以使用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对象。
-
通过使用Iterator,我们只能从正面方向从Collection Object中检索元素。
- 在那里作为List Iterator,它允许你在任何方向上遍历。 那就是List迭代器遍历两个方向。 所以它有另外一个方法
hasPrevious()和previous()而不是Iterator。
- 在那里作为List Iterator,它允许你在任何方向上遍历。 那就是List迭代器遍历两个方向。 所以它有另外一个方法