Встречается на собеседованиях • сегодня
Какие знаешь контракты ключа в HashMap
В Java ключи в HashMap должны соблюдать два основных контракта:
- Контракт
equals()иhashCode():- Если два объекта равны по
equals(), ихhashCode()должен быть одинаковым. - Обратное необязательно: разные объекты могут иметь одинаковый хеш (коллизия).
- Если два объекта равны по
- Неизменяемость (рекомендация):
- Ключ должен быть иммутабельным или, как минимум, не менять
hashCode()после добавления вHashMap. - Изменение ключа приведёт к потере доступа к значению, так как хеш-бакет определяется по старому
hashCode().
- Ключ должен быть иммутабельным или, как минимум, не менять
Пример нарушения (плохая практика):
java
class MutableKey {
String value;
@Override
public int hashCode() { return value.hashCode(); }
@Override
public boolean equals(Object o) { /*...*/ }
}
MutableKey key = new MutableKey("A");
map.put(key, 1);
key.value = "B"; // Теперь map.get(key) может вернуть null!Используйте String, Integer или другие иммутабельные типы для ключей.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы