У меня есть метод Overridden equals класса Person, сравнивающий атрибут name класса и, если они равны, возвращает значение true из метода equals.
Когда я создаю экземпляр объекта Person и использую его как ключ вhashmap, при получении с использованием нового объекта с тем же именем я не могу получить обратно связанное значение из hashMap.
Ниже мой
import java.util.HashMap;
import java.util.Map;
открытый класс ToStringTest {
public static void main(String[] args) {
Person person = new Person("Jack", "California");
Map<Person,String> personsMap = new HashMap<>();
personsMap.put(person,"MyCar");
Person otherPerson = new Person("Jack", "California");
System.out.println(personsMap.get(otherPerson));
}
}
класс Person {
String name;
String city;
public Person(String name, String city) {
this.name = name;
this.city = city;
}
@Override
public String toString() {
return "Name : " + this.name + ", City : " + this.city;
}
@Override
public boolean equals(Object o) {
Person person = (Person) o;
if(person.name.equals(this.name)){
return true;
}
return false;
}
}
Это печать ноль при полученииот использования объекта otherPerson.
Может кто-нибудь объяснить, пожалуйста, это поведение.