在 Java 中,使用 for 循环遍历 List 时移除元素和在迭代器遍历时移除元素,分别什么情况下会报错,什么情况下可以正常运行?
考察说明
考察集合遍历与并发修改的异常机制和正确操作方式
回答思路
- 指出使用普通 for 循环按索引遍历时直接移除通常不报错但可能漏元素,倒序遍历可安全移除
- 说明使用增强 for 循环(for-each)内部使用迭代器,直接移除会抛出 ConcurrentModificationException
- 说明显式使用迭代器遍历过程中调用 iterator.remove() 是安全的
- 分析迭代器遍历时调用 list.remove() 会触发 fast-fail 机制报错
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。