ListIterator是一个功能更加强大的迭代器接口, 它继承于Iterator接口,只能用于各种List类型的访问。可以通过调用listIterator()方法产生一个指向List开始处的ListIterator, 还可以调用listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator。
public interface ListIterator<E> extends Iterator<E> {
// Query Operations
// 以正向遍历列表时,如果列表迭代器有多个元素,则返回true
boolean hasNext();
// 返回列表中的下一个元素
E next();
// 如果以逆向遍历列表集合,列表迭代器有多个元素,则返回true
boolean hasPrevious();
// 返回列表集合中前一个元素
E previous();
// 返回对next的后续调用所返回的元素的索引
int nextIndex();
// 返回对previous的后续调用所返回元素的索引
int previousIndex();
// Modification Operations
// 从列表中移除由next或previous返回的最后一个元素
void remove();
// 用指定元素替换next或者previous返回的最后一个元素
void set(E e);
//将指定的元素插入列表
void add(E e);
}
由以上源码内容可以看出可以ListIterator的特点:
(1)双向移动(向前/向后遍历).
(2)产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引.
(3)可以使用set()方法替换它访问过的最后一个元素.
(4)可以使用add()方法在next()方法返回的元素之前或previous()方法返回的元素之后插入一个元素.
都是迭代器,当需要对集合中元素进行遍历不需要干涉其遍历过程时,这两种迭代器都可以使用。