方法一和方法二 各有什么优点和缺点?
各适用于什么地方?大家各抒己见。import java.util.ArrayList;
import java.util.List;public class TestList {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
list.add(i);// 组装list
}
//方法一
list.removeAll(new ArrayList<Integer>() {
{
add(5);
}
});
//方法二
 for (int i = 0; i < list.size(); i++) {
if (5 == (Integer) list.get(i)) {// 循环查找如果是5的就删除
list.remove(i);
i--;
}
}
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
}
}
}

解决方案 »

  1.   

    看不懂什么意思,for (int i = 0; i < list.size(); i++) {
                if (5 == (Integer) list.get(i)) {// 循环查找如果是5的就删除
                    list.remove(i);
                    i--;
                }
            }
    这个写法虽然可以,只是可读性太差了。下面这样写可读性就好多了。for (int i = list.size()-1; i >= 0 ; i--) {
                if (5 == (Integer) list.get(i)) {// 循环查找如果是5的就删除
                    list.remove(i);
                }
            }
      

  2.   

    方法一的好处是你删除多个元素时,只要add()就可以了,比较简单.
    还可以把要删除的写一个容器中,直接list.removeAll(c);
      

  3.   

    如果list里面放的是 自己定义的对象的话,
    方法一 就不是很好用了;(灵活性不够)
      

  4.   

    自己定义的对象,你用方法二怎么删除?是不是要自定义的类要实现eqauls()啊?只要你实现了eqauls(),方法一照用.
      

  5.   

    首先可以肯定是的两个方法都实现了同一功能。
    我个人认为方法一与方法二的优点比较侧重于运行速度的比较。下面看看我的测试代码(代码是拿楼主的做测试)
    代码如下:/**
     * 
     *//**
     * @author WenLiang
     */
    import java.util.ArrayList;
    import java.util.List;public class TestList {
        public static void main(String[] args) {      
            List<Integer> list = new ArrayList<Integer>();
            for (int i = 0; i < 10; i++) {
                list.add(i);// 组装list
            }
            //方法一
            long startTime=System.nanoTime();  
            list.removeAll(new ArrayList<Integer>() {
                {
                    add(5);
                }
            });
            long endTime=System.nanoTime(); //获取结束时间   
            System.out.println("程序运行时间: "+(endTime-startTime)); 
           // 方法二
            long startTime1=System.nanoTime();
             for (int i = 0; i < list.size(); i++) {
                if (5 == (Integer) list.get(i)) {// 循环查找如果是5的就删除
                    list.remove(i);
                    i--;
                }
            }
             long endTime1=System.nanoTime(); //获取结束时间   
             System.out.println("程序运行时间: "+(endTime1-startTime1)); 
            for (int i = 0; i < list.size(); i++) {
                System.out.print(list.get(i));
            }
            
            if ((endTime-startTime)>(endTime1-startTime1)) {
    System.out.println("\n方法一运行需要的时间多于方法二运行需要的时间");
    }else {
    System.out.println("方法一运行需要的时间少于方法二运行需要的时间");
    }
     
            
        }
    }运行程序 打印出来的结果为程序运行时间: 2212851
    程序运行时间: 64534
    012346789
    方法一运行需要的时间多于方法二运行需要的时间
    当然运行的时间(红色标记的地方)就有机器的性能决定了。
    但是最终结果是:方法一运行需要的时间多于方法二运行需要的时间说到此。优缺点自然明了。