Iterator<E>和ListIterator<E>都是接口,只是ListIterator继承Iterator接口,
对于实现了Collection的类都能使用Iterator,但是只有List接口的下的实现类才能使用ListIterator。
图中,0,1,2,3是迭代器的移动位置,初始的时候位于0,next后返回w元素,迭代器位于1位置
Iterator接口中常用方法有
booleanhasNext();
Enext();
remove();
ListIterator中多了如下方法
boolean hasPrevious();//此方法意思为,迭代器的位置前面是否还有元素
E previous();//和next一样,返回迭代器越过的元素
int nextIndex();//返回迭代器位置的下一个元素下标
int previousIndex();//返回迭代器位置的上一个元素的下标
void set(Ee);//修改next或者previous方法越过的返回元素
void add(Ee);//和Collection.add是添加到列表的尾部,这里的add是添加到迭代器位置,
set()方法例子:
List list =newLinkedList();
list.add("wang");
list.add("jian");
list.add("xin");
ListIterator listit = list.listIterator();
listit.next(); //wang
listit.next();//jian
listit.previous();//jian
listit.previous();//wang
listit.set("1");//修改wang元素
System.out.println(list);
输出:[1, jian, xin]
add()方法例子:
ListIterator listit = list.listIterator();
listit.next();//返回wang
listit.add("1");
System.out.println(list);
输出:[wang, 1, jian, xin]