Netbeans 中运行程序如下
public class NewMain {
    public static void main(String[] args) {
        list.add(0,"小红");
        list.add(1,"小花");
        list.add(2,"小草");
        it=list.listIterator();
        while(it.hasNext()){
        System.out.println(it.nextIndex());
        System.out.println(it.next());
        }
    }
private static List list=new ArrayList();
private static ListIterator it;
}
一段超简单程序,运行结果为0
小红
1
小花
2
小草
然而将while循环改为        while(it.hasNext()){
        System.out.println(it.nextIndex());        }
结果大变 成为死循环 结果为0
                       0
                       0
                       0......  

解决方案 »

  1.   

    Iterator it = list.iterator();
    while (it.hasNext()) {
    System.out.println(it.next());
    }
    这样应该没问题
      

  2.   

    我主要是想获知  it.nextIndex() 也就是列表的标号
      

  3.   

    我主要是想获知  it.nextIndex() 也就是列表的标号
      

  4.   

    那你就用不着用list啊,改用array就可以啦
      

  5.   

    那你就用不着用list啊,改用array就可以啦
      

  6.   

    Array固然可以  但是可以从正面来说明一下成为死循环的根本原因吗 
      

  7.   

    只是nextIndex()方法和 next()方法的内部实现不同,next()会把迭代器向下移动一位,而nextIndex()不会
      

  8.   

    因为调用next()才会指向下一个元素啊,nextIndex()只是指出下一个的索引
      

  9.   

    8楼说的下点。我再补充一下,如果你想只得到序列号也可以这样:
    System.out.println(it.nextIndext());
    it.next();搞定...
      

  10.   

    只有调用了next()后迭代器才会向后挪动。