如果我运行以下代码,输出结果是2,这意味着该集合包含2个元素。然而,根据hashcode()值以及
.equals()
方法,这两个对象都是相等的,因此我认为该集合应该只含有1个元素。
我的理解中似乎存在一些明显的错误?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;
}
}