ArrayList边遍历自身边删除元素的方法
2015-07-31 16:40
357 查看
今天写代码时,需要删除一个列表中的某个元素,于是就用了一个循环,一边遍历一边删除,一个同事在review我的代码时告诉我,不能这样写,会出问题。
于是,Google了一下,原来这种遍历有可能会遗漏某个元素,因为删除元素后List的size在变化,元素的索引也在变化,比如你循环到第2个元素的时候你把它删了,接下来你去访问第3个元素,实际上访问到的是原先的第4个元素。
这时候,我们可以使用Iterator的方式也可以顺利删除和遍历。
for(int i = 0; i < list.size(); i++){ if(list.get(i).icon_name.equals("shape8"){ list.remove(i); } }
于是,Google了一下,原来这种遍历有可能会遗漏某个元素,因为删除元素后List的size在变化,元素的索引也在变化,比如你循环到第2个元素的时候你把它删了,接下来你去访问第3个元素,实际上访问到的是原先的第4个元素。
Iterator<ShapeEntity> iterator = list.iterator(); while(iterator.hasNext()){ ShapeEntity shapeEntity = iterator.next(); if(shapeEntity.icon_name.equals("shape8")){ iterator.remove(); } }
这时候,我们可以使用Iterator的方式也可以顺利删除和遍历。
相关文章推荐
- 【HttpClient4.5中文教程】【第一章 :基础】1.1执行请求(三)
- 百度视频搜索提示
- Drupal7配置之上传进度条
- HDU~2817~悼念512汶川大地震遇难同胞——老人是真饿了【贪心】
- python实现爬图,不要再爬妹子图了,太没品
- perl 查找基因的重复区域 并计算重复区域碱基数
- logcat里面不打印信息
- 数字签名和数字证书
- 数据库相关(5) SQLite
- hdu 4746 Mophues 莫比乌斯反演
- android 杂记6:Android xml资源文件的一些东西
- 20150726 CSS Sprite雪碧图应用
- mysql查询语句in和exists二者的区别和性能影响
- 20150726 网页布局基础
- HTML标签
- C#打开Powerpoint
- Cordeva的安装和部署项目
- 非圆加工平台主轴电机驱动器TSV-AL030M
- 递归求汉诺塔的解
- Redis——简介