ListIterator是一个更强大的Iterator的子类型,它只能用于各种List类的访问。尽管Iterator只能向前移动,但是ListIterator可以双向移动。它还可以产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引。并且可以用set方法替换它访问过的最后一个元素。你可以通过调用一个listIterator()方法产生一个指向List开始处的ListIterator,并且还可以通过调用listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator。
示例代码如下:
package com.trs.collection;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteration {
public static void main(String[] args) {
List<String> cityList = new ArrayList<String>();
cityList.add("合肥");
cityList.add("南京");
cityList.add("上海");
cityList.add("杭州");
cityList.add("芜湖");
cityList.add("武汉");
ListIterator<String> iterator = cityList.listIterator();
while(iterator.hasNext()){
System.out.print(iterator.next()+", "+iterator.nextIndex()+", "+iterator.previousIndex());
}
System.out.println();
//相反的
while(iterator.hasPrevious()){
System.out.println(iterator.previous()+" ");
}
System.out.println();
System.out.println(cityList);
iterator = cityList.listIterator(3);
while(iterator.hasNext()){
iterator.next();
iterator.set("西安");
}
System.out.println(cityList);
}
}
运行结果: