class Test{  
    public static void main(String[] args) {  
    
        List books=new ArrayList();
        
        books.add(new String("java"));
        books.add(new String("android"));
        
        ListIterator lit=books.listIterator();
        while(lit.hasNext())
        {
                System.out.println(lit.next());
                lit.add("-----");
        }
    }    
} 按道理应该是java,-----,android,-----,-----这样一直循环下去。
但lit似乎直接忽略了add()的操作,我知道"-----"肯定存储在books中了,但lit为何迭代不到呢?
好像只有在下一次迭代才可以,求解!!!

解决方案 »

  1.   

    首先楼主代码写错了。
    其次以后发代码放在发代码的地方:
    例如
    public static void main(String[] args) {
    List books = new ArrayList();
    books.add(new String("java"));
    books.add(new String("android"));

    ListIterator ite = books.listIterator();

    while(ite.hasNext()){
    System.out.println(ite.next());
    ite.add("----------");
    }

    while(ite.hasNext()){
    System.out.println(ite.next());
    }
    }
    你看你的add是add在哪里的?
    就算是books.add();的。那么也是add在books中的。
    这时候程序已经运行到了循环这里,lit变量里面存的是books之前的元素?还能懂吗?

      

  2.   

    也就是说对于迭代器而言,是不能动态更新的是吧?
    PS:对于C++ STL迭代器的行为就是动态更新的
      

  3.   

    public static void main(String[] args) { List books = new ArrayList(); books.add(new String("java"));
    books.add(new String("android"));
    int i = 1;
    ListIterator lit = books.listIterator();
    while (lit.hasNext()) {
    System.out.println(lit.next());
    lit.add("-----");
    ++i;
    lit = books.listIterator(i);



    }
    }
    这样不久达到你的效果了
      

  4.   

    lit.add("---------");
    要加个计数器  也就是对这个进行控制  不然不但的加------------又不但的输出  死循环