Substituí os métodos hashCode
e equals
conforme abaixo e quero entender a implementação do método 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));
}
}
Tentei executar o resultado map.get()
esperado null
porque a chave nunca será encontrada porque o equals()
método sempre retornará falso, mas estou obtendo o resultado como A
neste caso.
HashMap
verificaget
a igualdade com==
antes de usarequals
.Portanto, o fato de você estar usando o mesmo objeto usado como chave (em vez de um objeto com o mesmo conteúdo, mas com uma referência diferente) funciona
get
.Se você tentar desta forma
ele imprime
null
.