package cn.rocker.list;

 import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; /**
* @ClassName: RemoveEleWhileIterator
* @Description: 集合在遍历过程中安全的删除集合中的元素
* @author 112
* @date 2018年3月26日 上午11:33:31
*/
public class RemoveEleWhileIterator { void init(List<Integer> list) {
list.clear();
for (int i = 0; i < 10; i++) {
list.add(i + 1);
}
} /**
* 移除方法一
* @param list
*/
void remove(List<Integer> list) {
for (int i = 0; i < 5; i++) {
list.remove(i);
}
} /**
* 移除方法二
* @param list
*/
void removeTwo(List<Integer> list) {
for (int i : list) {
if (i < 6) {
list.remove(i);
}
}
} /**
* 移除方法三
* @param list
*/
void removeThree(List<Integer> list) {
for (Iterator<Integer> iter = list.iterator(); iter.hasNext();) {
int i = iter.next();
if (i < 6) {
iter.remove();
}
}
} public static void main(String[] args) {
RemoveEleWhileIterator testList = new RemoveEleWhileIterator();
List<Integer> list = new ArrayList<Integer>(); // 第一种方法
testList.init(list);
testList.remove(list);
System.out.println(list); // 第二种方法
try {
testList.init(list);
testList.removeTwo(list);
System.out.println(list);
} catch (Exception e) {
e.printStackTrace();
} // 第三种方法
testList.init(list);
testList.removeThree(list);
System.out.println(list);
}
}

运行结果如下:

[2, 4, 6, 8, 10]

java.util.ConcurrentModificationException

at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)

at java.util.AbstractList$Itr.next(AbstractList.java:343)

  [6, 7, 8, 9, 10]

最新文章

  1. OS存储器管理(二)
  2. H5实现俄罗斯方块(三)
  3. CocoaPods 添加第三方库报错
  4. 【C#网络基础】C# get post请求
  5. Xcode8出现AQDefaultDevice (173): skipping input stream 0 0 0x0
  6. JSON对象长度和遍历方法(转)
  7. Vue 爬坑之路(三)—— 使用 vue-router 跳转页面
  8. 如何去掉wordpress网站url里面的index.php(Apache服务器)
  9. software testing
  10. java 基础 instance of
  11. Redis服务端的搭建(初级)
  12. 类似于PLC上升沿的TRIO代码示例
  13. shell基础:用户自定义变量
  14. mint18.3 升级linux-libc-dev_4.4.0-102.132 导致外接显示屏无法旋转,设置分辨率
  15. linux启动程序和关闭程序脚本
  16. English trip -- VC(情景课)10 D Reading 阅读练习
  17. windows python3 安装gittle
  18. 2017-2018-1 20155317 IPC
  19. 记录下一个自己不常用的关键字-yield
  20. MNIST手写数字识别 Tensorflow实现

热门文章

  1. 资源推荐:特意挑选了11个可以称得上“神器”的Windows工具下载
  2. Web.xml中Filter过滤器标签几个说明
  3. python之旅七【第七篇】面向对象之类成员
  4. Codeforces Round #419 Div. 1
  5. CH2101 可达性统计(算竞进阶习题)
  6. bzoj 2653: middle (主席树+二分)
  7. 阿里云.log
  8. SuperSocket 案例
  9. 在 CentOS 上编写 init.d service script [转]
  10. 洛谷P3602 Koishi Loves Segments(贪心,multiset)