论述题 18.  Iterator和ListIterator有什么区别?
【正确答案】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
【答案解析】