遍历Collection集合的一般遍历方式:
for()循环遍历集合(仅适用于List接口体系)
Iterator遍历集合(不能直接修改集合)
foreach遍历集合,实际上底层还是iterator实现(不能直接修改集合)
- iterator没有装东西的能力,它只是用来遍历集合的迭代器。
上面(2)发生错误的原因是一条线程正在迭代访问Collection的迭代结合元素的时候,另一条线程修改了Collection集合,导致运行出错,Iterator采用的是快速失败(fail-fast)机制避免共享资源而引发的潜在问题。迭代其中next()方法被调用的时候,会先判断list中的操作数和iterator中操作数是否相等,不相等就报错。