java集合循环删除

时间:2022-06-02 07:00:37

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集合循环删除

上面的图也可以看出,因为我们是根据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.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)