ArrayList的remove()方法

    xiaoxiao2026-04-25  9

    我们要遍历删除ArrayList的元素,可能会这样写:

    for(Integer i : list) { lists.remove(i); }

    或者

    for(int i = 0; i < lists.size(); i++) { list.remove(i); }

    以上第一种方法会直接报java.util.ConcurrentModificationException错误,因为在foreach循环写法中,它使用的是Iterator,而删除元素用的是ArrayList自身的remove()方法,而Iterator在调用hasNext()这个方法的时候,会判断是否数组被此Iterator外的其他对象给更改了,这里就是被ArrayList的对象更改了,所以会报错。 第二种方法不会报错,但删不干净,它会隔一个删一个,因为在删除的时候,后面的元素会前移,每次就会跳过一个元素。

    正确的写法有三种:

    Iterator iter = list.iterator(); while(iter.hasNext()) { iter.next(); iter.remove(); } for(int i = 0; i < lists.size();) { list.remove(i); } list.clear();
    转载请注明原文地址: https://ju.6miu.com/read-1309216.html
    最新回复(0)