我已经重写了hashCode
和equals
方法,如下所示,并且我想了解 Map get 方法的实现。
public class Student{
String name;
Student(String s){
this.name = s;
}
@Override
public boolean equals(Object o) {
return false;
}
@Override
public int hashCode() {
return 111;
}
public static void main(String[] args) {
Map<Student,String> map=new HashMap<>();
Student ob1=new Student("A");
Student ob2=new Student("B");
map.put(ob1,"A");
map.put(ob2,"B");
System.out.println(map.get(ob1));
}
}
我尝试运行map.get()
期望null
结果,因为该方法总是返回 false,所以永远找不到密钥,但是我得到了与本例equals()
相同的结果。A
HashMap
在使用之前检查是否get
相等==
equals
。因此,使用与用作键的相同对象(而不是具有相同内容但不同引用的对象)这一事实使得
get
工作有效。如果你尝试这样做
它打印
null
。