List<Club> lc = new ArrayList<Club>();
Iterator<Club>  i = lc.iterator();
    Club c = null;
    while(i.hasNext() ) {
c = i.next();         //第二次循环到这里就出错
        if(!c.isIslive) 
    lc.remove(c);
}
    }
前后代码先省了,有需要的话再说!

解决方案 »

  1.   

    import java.util.*;
    public class Testiter { public static void main(String[] args) {
    List<Club> l = new LinkedList<Club>() ;
    l.add(new Club());
    l.add(new Club());
    l.add(new Club());
    l.add(new Club());

    Iterator<Club> i = l.iterator();
    Club c =null;
    while(i.hasNext()){
    c = i.next();
    l.remove(c);
    }

    }}class Club {

    }
    就看看这个代码吧,为什么不行啊!
      

  2.   


    Iterator迭代时不要修改该迭代器所指向的 collection
      

  3.   

    是不是Iterator <Club>  i = lc.iterator(); 这?泛型能用于迭代吗?你把<Club>去掉试试,不行当我没说,没用过泛型,呵呵
      

  4.   

    改好了。import java.util.*;
    public class Testiter { public static void main(String[] args) {
    List<Club> l = new LinkedList<Club>() ;
    l.add(new Club());
    l.add(new Club());
    l.add(new Club());
    l.add(new Club());

    Iterator<Club> i = l.iterator();
    Club c =null;
    while(i.hasNext()){
    c = i.next();
    i.remove();
    }

    }}class Club {

    }
      

  5.   

    lc.remove(c);
    这样写是不行的。
    改为:i.remove();
    就好了。
    谢谢大家。
      

  6.   

    不能那样remove(),要用Iterator里的那个remove()
    while(it.hasNext()) {
      it.next();
      it.remove();
    }
    具体为什么一直看得不是很懂
    好像是涉及线程安全方面的问题吧