本帖最后由 sl514 于 2012-06-05 17:35:46 编辑

解决方案 »

  1.   

    遍历删除会产生一个问题
    删除动作作用时,会同时改变list内部的index的确需要遍历删除的情况下,要这么做: List<String> l = new ArrayList<String>();
            l.add("11111");
            l.add("22222");        for(Iterator<String> it = l.iterator();it.hasNext();){
             it.next();
             it.remove();
            }
            
            System.out.println(l);
    如果你用Iterator接口,要用index来做的话,注意一点,每次删除以后.size()就被改变了,所以你要把size方法移出for循环之外
    类似这样: List<String> l = new ArrayList<String>();
            l.add("11111");
            l.add("22222");        int size = l.size();
            for(int i = size - 1; i >= 0; --i){
             l.remove(i);
            }
            
            System.out.println(l);
      

  2.   

     List<String> l = new ArrayList<String>();
            l.add("11111");
            l.add("22222");
            while(l.iterator().hasNext()) {
             l.remove(l.get(0));
            }
           System.out.println(l.size());
      

  3.   

    汗,这个做法不是每次都获取list.iterator了...
    标准的设计溢出啊...
      

  4.   


    public static void main(String[] args) {
            List<String> l = new ArrayList<String>();
            l.add("11111");
            l.add("22222");
            while(l.size()>0){
            l.remove(l.size()-1)
            }
            System.out.println(l.size());
    }
      

  5.   

    for循环中利用递减方式!!!(int i=l.size();i>=0;i--)......
      

  6.   


    package com.zf.test;import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class Test5 {
    public static void main(String[] args) {
    List<String> l = new ArrayList<String>();
    l.add("11111");
    l.add("22222"); //单独用下面三个中的某一个方法肯定是都不行的。 //(1) 这里foreach循环,其实就相当于是Iterator在迭代集合对象 ,
    //    Iterator在迭代对象的时候是不允许被迭代的对象修改或Remove的,除非用Iterator自己的remove()方法
    for(String a : l){
    l.remove(a);
    }
    //改成下面这样是可以的。
    Iterator<String> it = l.iterator();
    while(it.hasNext()){
    it.next();
    it.remove();
    } //(2) 你可以试想一下 , 刚开始的时候l.size() = 2 , i = 0 
    // 当执行完第一次循环  就移除了一个对象  此时 , l.size() == 1 , i = 1
    // 此时  i< l.size() 不成立 , 就不会继续循环了。
    for(int i=0;i<l.size();i++){ 
    l.remove(l.get(i));
    } // 同上
    for(int i=0;i<l.size();i++){
    l.remove(i);
    }
    System.out.println(l.size()); }
    }
      

  7.   

    当你删除了第一个对象后,list内部更新了index,这时list.size=1,而i==1 跳出循环,所以不能完全删除
      

  8.   

    其实你已经删除了一个了,size为1 不是2 说明已经删除了一个而已,其它的楼上说的很清楚了
      

  9.   

    for(int i=0;i<l.size();i++){
                l.remove(i);
    }
    当i=0时删除了一个,当i=1时size()=1, 循环退出了
    for(int i=0;i<l.size();i++){
                l.remove(l.get(i));
    }
    一个道理
      

  10.   

    打印结果是0 ,如上面所说的,每个for只remove了一个element,第三个for不起作用