并发修改异常java.util.ConcurrentModificationException

java.util.ConcurrentModificationException并发修改异常

并发修改异常

高手可以绕行,该错误比较低级,主要原因是遍历时又动态对集合进行修改操作,直接调用集合中方法均是错误的做法,正确的做法是使用interator迭代器去进行增删改。
在集合操作中如果使用迭代器去遍历集合中的元素经常会遇到并发修改异常java.util.ConcurrentModificationException

引发这个问题的主要原因是,迭代器在遍历查询集合元素时,元素又动态添加了

错误代码

需求是如果集合中含有c的元素那么就添加e的元素

List<String> list = new ArrayList<String>();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		Iterator<String> iterator = list.iterator();
		while (iterator.hasNext()) {
			if (iterator.next().equals("c")) {
				list.add("e");
			}
		}
		System.out.println(list);

一运行就会报java.util.ConcurrentModificationException的异常

修改后代码

思路,如果有添加的元素那么就使用迭代器的添加方法,不能使用集合直接添加

List<String> list = new ArrayList<String>();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		ListIterator<String> iterator = list.listIterator();
		while (iterator.hasNext()) {
			if (iterator.next().equals("c")) {
				iterator.add("e");
			}
		}
		System.out.println(list);

日常笔记,继续保持!!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值