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迭代器遍历两个方向。 所以它有另外一个方法