【正确答案】lterator模式是用于遍历集合类的标准访问方法,它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。ListIterator是Iterator的子类接口,只能用于各种List类(例如List、ArrayList、LinkedList、Vector等)的访问。
具体而言,Iterator和ListIterator都可以实现对List的遍历,它们主要有如下几个不同之处:
1)Iterator和Listlterator都提供了hasNext和next方法用于实现对List的顺序遍历,此外,ListIterator还提供了hasPrevious和previous方法,可以实现对链表的逆向遍历。
2)ListIterator提供了add方法,可以向List中添加元素,而Iterator没有这个功能。
3)ListIterator可以通过set方法修改List中元素的值,而Iterator没有这个功能。
4)ListIterator可以通过nextIndex()方法和previousIndex()方法定位当前的索引位置,而Iterator没有这个功能。
下面给出一个队列表逆向遍历的例子:
import java.util.List;
import java.util.Listlterator;
import java.util.ArrayList;
public class Test
{
public static void main(String[]args)
{
List<String>1=new ArrayList<String>();
for(int i=0;i<5;i++)
1.add("str"+i);
Listlterator<String>it=1.listIterator(1.size());
while(it.hasPrevious())
{
System.out.println(it.previous());
}
}
}
程序的运行结果为:
str4
str3
str2
str1
str0
【答案解析】