jas*_*ssu 133 java iterator list set listiterator
Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
Run Code Online (Sandbox Code Playgroud)
我们可以Iterator用来遍历一个Set或一个List或一个Map.但是ListIterator只能用来遍历一个List,它不能遍历一个Set.为什么?
我知道主要区别在于,使用迭代器,我们只能朝一个方向行进,但ListIterator我们可以向两个方向行进.还有其他差异吗?ListIterator超过任何优势Iterator?
Pet*_*rey 147
这些差异列在Javadoc for ListIterator中
您可以
jai*_*eep 39
有两点不同:
我们可以使用Iterator遍历Set和List以及Map类型的Objects.虽然ListIterator可用于遍历List-type对象,但不能用于Set-type of Objects.
也就是说,我们可以使用Set和List获取Iterator对象,请参见此处:
通过使用Iterator,我们只能从正向收集Collection Object中的元素.
迭代器中的方法:
hasNext()next()remove()Iterator iterator = Set.iterator();
Iterator iterator = List.iterator();Run Code Online (Sandbox Code Playgroud)但我们只从List接口获取ListIterator对象,请参见此处:
ListIterator允许您在任何方向上进行遍历(向前和向后).所以,它有两个方法,如hasPrevious()与 previous()比Iterator的其他.此外,我们可以获取下一个或前一个元素的索引(分别使用nextIndex() 和previousIndex())
ListIterator中的方法:
ListIterator listiterator = List.listIterator();Run Code Online (Sandbox Code Playgroud)
即,我们无法从Set接口获取ListIterator对象.
参考: - Iterator和ListIterator有什么区别?
use*_*551 25
Iterator是ListIterator的超类.
以下是它们之间的区别:
iterator你只能前进,但ListIterator你可以在阅读的元素也移动backword.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
}
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)