关于List.remove()报错的问题

在操作List集合时,直接使用List.remove()可能导致ConcurrentModificationException异常。本文介绍如何使用ListIterator进行安全的元素移除及新增操作,避免modCount属性被意外修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【关于List.remove()报错的问题】

我们如果想删掉List中某一个对象,我们可能就会想到会用List.remove()方法。但是这样如果后续操作这个list的时候就会报错。

具体的原因是当你操作了List的remove方法的时候,他回去修改List的modCount属性。导致抛出异常java.util.ConcurrentModificationException。

最好的想要修改List对象,我们可以用ListIterator。就像这样:

ArrayList<Integer> arrayList = new ArrayList<>();

 for (int i = 0; i < 20; i++) {

 arrayList.add(Integer.valueOf(i));

 }

ListIterator<Integer> iterator = arrayList.listIterator();

 while (iterator.hasNext()) {

if(需要满足的条件){

iterator.remove();//删除操作

iterator.add(integer);//新增操作

}

}

这样就不会去修改List的modCount属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值