在循环过程中删除List的元素
2016-09-07 19:53
232 查看
今天遇到了一个问题,需要循环一个list,并且在循环中对每个元素依据某条件进行判断,不符合规则则移除元素。
最开始写考虑到删除List中元素会使其他元素位移,所以使用增强for来进行实现,代码如下:
运行以上语句会报异常ConcurrentModificationException。这个异常翻译过来是并发修改异常。
在网上查阅资料才知道,这种情景下要删除元素应该使用Iterator,代码如下:
这样list中满足条件的元素就被移除了。或者另一种解决方案是使用原始的for循环来删除list中的元素,这样并不会有异常产生。
最开始写考虑到删除List中元素会使其他元素位移,所以使用增强for来进行实现,代码如下:
for(Object object : list){ if(object.id<5){ list.remove(object); } }
运行以上语句会报异常ConcurrentModificationException。这个异常翻译过来是并发修改异常。
在网上查阅资料才知道,这种情景下要删除元素应该使用Iterator,代码如下:
Iterator<Object> iterator = list.iterator(); while(iterator.hasNext()){ Object object = iterator.next(); if(object.id<5){ iterator.remove(); } }
这样list中满足条件的元素就被移除了。或者另一种解决方案是使用原始的for循环来删除list中的元素,这样并不会有异常产生。
相关文章推荐
- C#实现导出List数据到xml文件的方法【附demo源码下载】
- C#中list用法实例
- C#中Ilist与list的区别小结
- C#中IList<T>与List<T>的区别深入解析
- C#对list列表进行随机排序的方法
- Vc++ 控件List Control用法总结
- C++实现的泛型List类分享
- C#使用IComparer自定义List类实现排序的方法
- C# Datagridview绑定List方法代码
- C#实现DataTable,List和Json转换的方法
- javascript radio list的实现细节(多浏览器兼容)
- c++ STL容器总结之:vertor与list的应用
- Java中对List集合的常用操作详解
- java实现List中对象排序的方法
- 大家注意vector, list, set, map成员函数erase
- ASP.NET―001:GridView绑定List、页面返回值具体实现
- List all the Databases on a SQL Server
- js Map List 遍历使用示例
- Java比较两个List的值是否相等的方法
- Java List双击事件实现方法