博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java.util.ConcurrentModificationException
阅读量:5281 次
发布时间:2019-06-14

本文共 1187 字,大约阅读时间需要 3 分钟。

不能在对一个List进行遍历的时候将其中的元素删除掉

会报错java.util.ConcurrentModificationException

出错代码如下,在for循环中删除动态数组中的内容:

for (moveBall x : ballShadow) {            Log.e("51", "X ref:" + x.ballX + " ,Y ref:" + x.ballY + " ,alpha: " + x.alpha);            x.alpha -= 30;            if (x.alpha < 0) {                ballShadow.remove(x);    //这条语句出错            }        }

解决方法:

1.使用index进行删除

for (int i = 0; i < ballShadow.size(); i++) {            ballShadow.get(i).alpha -= 30;            if (ballShadow.get(i).alpha < 0) {                ballShadow.remove(i);            }        }

2.使用迭代器删除

ListIterator
moveBallListIterator = ballShadow.listIterator(); while (moveBallListIterator.hasNext()) { moveBall ball = moveBallListIterator.next(); ball.alpha -= alphaLevel; if (ball.alpha < 0) moveBallListIterator.remove(); }

3.在添加一个链表记录要删除的元素,不会出错,但最后结果和上面2种方法不同。

List delList = new ArrayList();        for (moveBall x : ballShadow) {            x.alpha -= 30;            if (x.alpha < 0) {                delList.add(x);            }        }        ballShadow.remove(delList);

转载于:https://www.cnblogs.com/helloworldtoyou/p/5621855.html

你可能感兴趣的文章
CS61A Efficiency 笔记
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>
Elasticsearch 滚动重启 必读
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
浅说 apache setenvif_module模块
查看>>
MySQL--数据插入
查看>>
重新学习python系列(二)? WTF?
查看>>
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
排序sort (一)
查看>>