import   java.util.*;   
    
  public   class   ListIteratorDemo{   
  public   static   void   main(String[]   args)   {  List   list1   =   new   ArrayList();   
  list1.add("one");   
  list1.add("two");   
  list1.add("three");   
    
  ListIterator   it   =   list1.listIterator();   while(it.hasNext())
{  System.out.println("next()element = "+it.nextIndex());
 System.out.println("next()element = "+it.next());

}
while(it.hasPrevious())
{  System.out.println("Previous()element = "+it.previousIndex());
System.out.println("Previous()element = "+it.previous());}
 
  }
  }   
输出结果是:
next()element = 0
next()element = one
next()element = 1
next()element = two
next()element = 2
next()element = threePrevious()element = 2
Previous()element = three
Previous()element = 1
Previous()element = two
Previous()element = 0
Previous()element = one我不明白的是 第1个while循环 迭代器应该已经指向了 最后1个元素 也就是three 索引号2 这个元素
那么到了第2个while循环的首个Previous()应该指向到two 索引号1这个元素才对呀..也就是 第2个循环只输出2个元素才对?  为什么还能输出3个呢?JAVA新手..CSDN的高手们教我下吧..

解决方案 »

  1.   

    api帮助中有说明ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。长度为 n 的列表的迭代器有 n+1 个可能的指针位置,如下面的插入符举例说明: 
    ^   Element(0) ^  Element(1) ^  Element(2) ^  ... ^ Element(n-1) ^
      

  2.   

    ListIterator<E>系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。长度为 n 的列表的迭代器有 n+1 个可能的指针位置,如下面的插入符举例说明: 
                          Element(0)   Element(1)   Element(2)   ... Element(n-1)
     cursor positions:  ^            ^            ^            ^                  ^
      

  3.   


    哎...API没看清楚...就着急发问了...
    谢谢楼上的.
      

  4.   

    呵呵,跟1楼想一块了,API 文档。
      

  5.   

     开始时迭代器指在第一个的前面,如下所示: 
    #0   1   2
    one two three第二个while开始时迭代器指在最后一个的后面。