java.util.ConcurrentModificationException at java.util.ArrayList$Itr.next(ArrayList.java:860

本文讲述了在Android应用中遇到`ConcurrentModificationException`的问题,当使用ArrayList迭代刷新数据时。解决方法是改用for循环操作,解释了为何迭代时修改列表会引发异常,并给出了相关代码示例和原因分析。

问题

使用ArrayList数据结构, 在迭代的请求页面进行数据刷新, 控制台报错

java.util.ConcurrentModificationException
        at java.util.ArrayList$Itr.next(ArrayList.java:860)
        at 

详细问题

2022-09-27 11:18:00.135 17592-17592/com.example.electronicmall E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.electronicmall, PID: 17592
    java.util.ConcurrentModificationException
        at java.util.ArrayList$Itr.next(ArrayList.java:860)
        at com.example.electronicmall.test.SuperAdmin.SuperAdminReportUserReportingActivity$12$1.run(SuperAdminReportUserReportingActivity.java:626)
        at android.os.Handler.handleCallback(Handler.java:900)
        at android.os.Handler.dispatchMessage(Handler.java:103)
        at android.os.Looper.loop(Looper.java:219)
        at android.app.ActivityThread.main(ActivityThread.java:8668)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)

解决方案

不采用迭代方式操作数据, 采用for循环操作
对于笔者而言 即将

ArrayList<String> sites = new ArrayList<String>();
terator<String> it = sites.iterator();
while(it.hasNext()) {
	// code 对于it操作
}

改为

ArrayList<String> sites = new ArrayList<String>();
for (int i = 0; i < sites.size(); i++) {
	// code 对于sites.get(i)操作
}

原因

对Vector、ArrayList等可迭代的数据结构, 若采用迭代操作, 在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常

原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞滕人生TYF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值