Sobes.tech
Back to questions
Junior — Middle
54

Какие методы или свойства необходимо изменить у объекта, чтобы использовать его в качестве ключа в HashMap?

Companies where asked
ОТП БанкОТП Банк

Answer from AI

sobes.tech AI

Чтобы объект можно было использовать в качестве ключа в HashMap, необходимо переопределить методы equals() и hashCode().

  • hashCode() должен возвращать целочисленное значение, которое соответствует хэш-коду объекта. Объекты, которые равны по equals(), должны иметь одинаковый hashCode().
  • equals() должен корректно сравнивать объекты на равенство по логике вашего класса.

Пример:

public class Person {
    private String name;
    private int age;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age && name.equals(person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

Без правильной реализации этих методов HashMap может работать некорректно, например, не находить ключи или создавать дубликаты.