答: Iterator 可用来遍历 Set 和 List 集合,但是 ListIterator 只能用来遍历 List 。
Iterator 对集合只能是前向遍历, ListIterator 既可以前向也可以后向。
ListIterator 实现了 Iterator 接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。
(1) Iterator
boolean hasNext()
E next()
void remove()
(2) ListIterator
void add(E e)
将 指定的元素插入列表(可选操作)。该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有);如果列表没有元素,那么新元素就成为列表中的唯一元素。新元素被插入到隐式光标前:不影响对 next 的后续调用,并且对 previous 的后续调用会返回此新元素(此调用把调用 nextIndex 或 previousIndex 所返回的值增加 1 )
boolean hasNext()
boolean hasPrevious() 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true 。
E next()
int nextIndex() 返回对 next 的后续调用所返回元素的索引。
E previous()
int prevoiusIndex() 返回对 previous 的后续调用所返回元素的索引
void remove()
void set(E e)
remove() 和 set(Object) 方法不是 根据光标位置定义的;它们是根据对调用 next() 或 previous() 所返回的最后一个元素的操作定义的。如: String str=(String)it.next();it.remove();
iterator可以遍历set和list集合,只可以向前遍历
listiterator 只可以遍历list集合,并且可以向前向后遍历
public interface ListIterator<E> extends Iterator<E> {}
Iterator迭代器可以遍历list和set对象,只能单向遍历也就是向后移动,只有三个方法,hasNext,next,remove,但listIterator只能迭代list,可以向前向后遍历,继承于iterator接口,除了拥有iterator的三个方法,增加元素,替换元素,获取前一个元素,和后一个元素