在迭代过程中修改集合元素(java)

这几天遇到一个问题,需要边迭代容器边删除容器中的元素,然后就出错了,看了几篇博客之后了解了原因这里就不重复记录了,只复现一下BUG和解决方法
BUG提示:java.util.ConcurrentModificationException
推荐博客:https://blog.csdn.net/qq_20492999/article/details/81216453

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

public class Main{
	
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<>();
		Random ran = new Random();
		//先加入20个元素
		for(int i = 0;i < 20;i++) {
			list.add(ran.nextInt());
		}
		System.out.println(list.toString());
		
		//删除集合所有元素
		
		//推荐方法:调用迭代器的remove方法
		Iterator<Integer> it = list.iterator();
		while(it.hasNext()) {
			it.next();//调用remove之前先将迭代器指向下个元素
			it.remove();
		}
		System.out.println(list.toString());
	}
}
		//错误方法:增强的for循环
		for(int x : list) {
			int index = list.indexOf(x);
			list.remove(index);
		}
		//其他方法:
		while(!list.isEmpty()) {
			list.remove(0);
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值