一、JAVA中循环遍历list有三种方式for循环、加强for循环(也就是常说的foreach循环)、iterator遍历并发
for循环遍历list(会报错)函数

- 问题在于,删除某个元素后,list的大小发生了变化,而你的索引也在变化,因此会致使你在遍历的时候漏掉某些元素
- 这种方式能够用在删除特定的一个元素时使用,但不适合循环删除多个元素时使用
加强for循环(单线程main函数测试,也会报错)测试

- 删除元素后继续循环会报错误信息ConcurrentModificationException
- 由于元素在使用的时候发生了并发的修改,致使异常抛出
- 可是删除完毕立刻使用break跳出,则不会触发报错
iterator遍历线程

- 这种方式能够正常的循环及删除
- 但要注意的是,请使用iterator的remove方法
- 若是用list的remove方法一样会报上面提到的ConcurrentModificationException错误
总结:blog
- 循环删除list中特定一个元素的,能够使用三种方式中的任意一种,但在使用中要注意上面分析的各个问题
- 循环删除list中多个元素的,应该使用迭代器iterator方式