Встречается на собеседованиях • сегодня
Что нужно для использования класса в виде ключа
Для использования класса в качестве ключа в HashMap или HashSet необходимо правильно реализовать методы equals() и hashCode(). Эти методы должны соблюдать контракт:
- Если объекты равны по
equals(), ихhashCode()должен быть одинаковым. - Объект должен быть иммутабельным (или хотя бы поля, участвующие в
equals/hashCode, неизменяемыми), чтобы хэш не менялся после добавления в коллекцию.
Пример:
java
class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return age == person.age && name.equals(person.name);
}
@Override
public int hashCode() {
return 31 * name.hashCode() + age;
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы