如果我运行以下代码,则输出为 2,这意味着该集合包含 2 个元素。但是我认为该集合应该包含 1,因为这两个对象基于hashcode()值和.equals()方法是相等的。在我的理解中似乎有一些明显的错误?
package HELLO;
import java.util.HashSet;
import java.util.Set;
public class Test {
    public static void main(String[] args) throws Exception {
        Set<Alpha> s = new HashSet<Alpha>();
        Alpha a1 = new Alpha();
        Alpha a2 = new Alpha();
        s.add(a1);
        s.add(a2);
        System.out.println(s.size());
    }
}   
class Alpha {
    int a = 10;
    public int hashcode() {
        return a;
    }
    public boolean equals(Object obj) {
        return (obj instanceof Alpha && ((Alpha) obj).a == this.a);
    }
    public String toString() {
        return "Alpha : " + a;
    }
}