it.remove()的原理

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
package com.company;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Iterator;
public class Main {

    public static void main(String[] args) {
    ArrayList list =new ArrayList();
    list.add("jack");
    list.add("Annie");
    list.add("Rose");
    list.add("Tom");
    Iterator it=list.iterator();
    while(it.hasNext()){
        Object obj=it.next();
        if("Tom".equals(obj)){
       
            it.remove();
            }
        //System.out.println(obj);不会删除Tom
        }
    System.out.println(list);//才会删除Tom
    }
}

System.out.println(obj);会输出Tom不是很正常的吗。
你删除的是it迭代器里面的元素,跟obj对象有什么关系?

Iterator接口的remove方法将会删除上次调用next方法时返回的元素,如果想要删除指定位置上的元素,需要越过这个元素