foreach循环遍历集合的底层原理和并发修改异常

本文探讨了在Java中使用foreach循环遍历集合时遇到的`ConcurrentModificationException`异常。foreach实际上是编译器提供的语法糖,转换为使用迭代器。当在遍历过程中尝试修改集合时,异常发生,因为ArrayList的modCount和迭代器中的expectedModCount不一致。解决方法是通过迭代器进行修改或使用其他遍历策略。
摘要由CSDN通过智能技术生成

一、问题描述

        按我的需求,我想要的是删除集合list种所有的“3”,但是结果不尽人意,执行后报了一个名为ConcurrentModificationException的异常,这也就是我们在进行可变数组元素删除时可能会经常碰到的一个问题,这就是并发修改异常。接下来我们详细介绍foreach循环的底层原理以及异常出现的原因。

ArrayList<Integer> list = new ArrayList<>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		list.add(5);
		list.add(3);
		System.out.println(list);
		
		for (Integer a : list) {
			if(a == 3) {
				list.remove(Integer.valueOf("3"));			
			}
		}
		System.out.println(list);

运行结果:

二、foreach循环遍历集合底层原理

        foreach本质上不过是编译器提供的“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值