最近,当我通过javadocs goint时,我在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();
答案 0 :(得分:6)
ListIterator是一个扩展Iterator的子类。
ListIterator允许双向遍历,而不仅仅是检查是否有更多元素(hasNext()
),并获取下一个元素(next()
)。它保持光标位置并调用next()
和previous()
将改变位置并返回相关值。 ListIterator还允许添加(add(E e)
)条目,并将条目(set(E e)
)设置到基础列表(与Iterator不同,只允许删除)。
答案 1 :(得分:4)
使用ListIterator,您可以在列表上向前和向后遍历,而只能使用Iterator向前遍历。另一方面,ListIterator仅用于列表,但Iterator用于map,set和list。
答案 2 :(得分:1)
ListIterator没有当前元素;它的光标位置总是位于调用previous()返回的元素和调用next()返回的元素之间。
答案 3 :(得分:1)
ListIterator只是普通Iterator的扩展,允许您在任一方向遍历列表,在迭代期间修改列表,并获取迭代器在列表中的当前位置。