为什么会返回false????????????


```package Class_3;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Objects;

class R{
    public int age;
    public R(int age) {
        this.age = age;
    }
    public String toString() {
        return "R[age:" + age + "]";
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        R r = (R) o;
        return age == r.age;
    }

    @Override
    public int hashCode() {
        return Objects.hash(age);
    }
}
public class Test {
    public static void main(String[] args) {
        HashSet<R> hs = new HashSet<R>();
        hs.add(new R(5));  //001
        hs.add(new R(-3)); //002
        hs.add(new R(9));
        hs.add(new R(-2));
        System.out.println(hs);
        Iterator<R> it = hs.iterator();
        R first = (R)it.next();
        first.age = -4;
        System.out.println(hs);
        //hs.remove(new R(-3));  //003
        //System.out.println(hs);

        System.out.println("hs是否包含age为-4的R对象?" + hs.contains(new R(-4)));
        System.out.println("hs是否包含age为-2的R对象?" + hs.contains(new R(-2)));
        hs.remove(new R(-2));
    }
}

return Objects.hash(age);
->
return age;

hs.contains(new R(-4))为什么会是false,是因为first和new R(-4)两个引用的对象不一样,it变量获取的是实际是new R(5)对象,参考如下代码debug截图:

图片说明