昨晚京东笔试中的一道选择题
public class Demo4 {
public static void main(String[] args) {
Set<MyClass> set=new HashSet<>();
set.add(new MyClass(5));
set.add(new MyClass(2));
set.add(new MyClass(6));
System.out.println(set.size());
}
}
class MyClass{
Integer i;
public MyClass(Integer y) {
i=y;
}
public boolean equals(MyClass c) {
System.out.println("equals(MyClass c)");
return false;
}
public boolean equals(Object o) {
System.out.println("equals(Object o)");
return true;
}
public int hashCode() {
System.out.println("hashCode()");
return 32;
}
}
如上面的代码,想知道为什么hashSet在添加元素时,当hashCode相等时,调用的equals方法首先是public boolean equals(Object o),当这个方法不存在时才是 public boolean equals(MyClass c) ,有点懵逼,希望各位大佬给出解答,谢谢
#笔试题目#