在foreach里面递归,在递归里面使用了ArrayList.listIterator();

在里面调用了此迭代器的remove方法,
刚开始插数据进行处理没问题,后面又插了两条数据,就有问题了
java.util.ConcurrentModificationException
逻辑就是这样,如果说之前插数据索引保持了了一致性,那么后面再插数据怎么就不行了呢? 求大神

3个回答

foreach最好循环一个固定数组或list,要是数组长度或者list改变,一般都会报错的。

KwaiSZ
KwaiSZ 嗯,还是采取这个方法吧,毕竟foreach就是用iterator实现的,谢咯
2 年多之前 回复

我现在没有改变它的size了,不管是调用同步的remove()方法,还是将要删除的元素放入另一个list中,然后removeall(list)都不行啊!

list不能再循环里面remove的,list的下表是会变的,remove掉一个元素后,后面所有的元素会前进一位

KwaiSZ
KwaiSZ 嗯 所以说递归也是?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问