title: 为什么使用迭代器时可以用集合对象删除元素？
desc: <img src
topic: Java
content: 我觉得题主的首要问题是被自己写的代码（以及JDK的ArrayList那可恶的API）给坑了。ArrayList上有两个版本的remove方法： public E removeint indexpublic boolean removeObject o题主很可能以为自己调用的是第二个版本，但实际上调用的是第一个版本remove3 删除了位于末尾的元素，而不是位于倒数第二的元素。ArrayList.iterator 返回出来的 Iterator<E>，里面的hasNext是不关心modification count的，而next
answerer_tags: 软件工程师、主攻高级编程语言虚拟机的设计与实现