java集合循环删除

java集合循环删除,java list集合操作,java循环。分享牛,分享牛原创。java集合删除方法。
2.6.1.第一种方式

    list.add("1");  
            list.add("2");  
            list.add("3");  
            list.add("4");  
            list.add("5");  
            for (int i = 0; i < list.size(); i++) {  
                    list.remove(i);  
                    System.out.println("remove "+list);
            }  
            System.out.println("test1 : " + list); 

2.6.2.输出结果
remove [2, 3, 4, 5]
remove [2, 4, 5]
remove [2, 4]
test1 : [2, 4]
java集合循环删除_第1张图片
上面的图也可以看出,因为我们是根据i的长度跟list.size()判断的,因为list.size()一直变小,所以i>list.size()的时候for中的代码块是不会执行的,因为不满足条件,所以最终数组最终不会被删除完。 如果remove中的索引大于数组的长度的时候会报错。看一下源代码一目了然吧
public E remove(int index) {
rangeCheck(index);
}
private void rangeCheck(int index) {
if (index >= size)
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
2.6.3.第二种方式

    ArrayList<String> list = new ArrayList<String>();  
        list.add("1");  
        list.add("2");  
        list.add("3");  
        list.add("4");  
        list.add("5");  
        for (String l : list) {  
              list.remove(l);  

        }  
        System.out.println("test2 : " + list); 

2.6.4.输出结果
Exception in thread “main” java.util.ConcurrentModificationException
at java.util.ArrayListItr.checkForComodification(UnknownSource)atjava.util.ArrayListItr.next(Unknown Source)
at com.shareniu.TestList.main(TestList.java:14)
2.6.5.第三种方式

ArrayList<String> list = new ArrayList<String>();  
        list.add("1");  
        list.add("2");  
        list.add("3");  
        list.add("4");  
        list.add("5");  
        Iterator<String> iter = list.iterator(); 
        while (iter.hasNext()) {  
            String s = iter.next();  
                iter.remove();  

        }  
        System.out.println("test3 : " + list);

2.6.6.输出结果
test3 : []
2.6.7.比较第二种跟第三种的差距
第二种采用的 list.remove(l);
第三种采用的 iter.remove();
两个方法不一样导致list.remove(l); 有参数的报错为什么?
这个暂时没发现原因,发现原因的话,最终补上去。
分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)

你可能感兴趣的:(java基础)