遍历的同时修改一个List的方式

在 foreach的同时修改集合,会触发fail-fast机制,这是因为List的foreach遍历内部使用了迭代器(Iterator),而迭代器设计中包含了一种称为fail-fast机制的错误检测机制。要避免fail-fast机制,有如下处理方案:

1. 通过普通的for循环(可能会造成漏删)

主要是因为List的索引在元素被移除时会发生变化,从List中移除一个元素时,该元素之后的所有元素都会向前移动一位,也就是它们的索引会减少1。因此,当i递增到下一个值时,它将跳过紧接在被删除元素之后的那个元素。

2. 通过普通的for循环倒序遍历

此方法可以避免漏删

3. 使用.hasNext()和.next()循环

4. 使用并发安全的集合类

在此之前需要转为线程安全的集合

5. 使用Stream的过滤方法

Stream每次处理过后都会生成一个新的Stream,不存在并发问题,所以Stream的filter也可以修改list集合

6. 使用removeIf方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值