Назад к вопросам
Газпромбанк
Junior — Middle
54
Что произойдет, если вставить в HashMap два ключа с одинаковым хеш-кодом, но различными значениями equals?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В HashMap в Java ключи хранятся в бакетах, индексируемых по хеш-коду. Если два ключа имеют одинаковый хеш-код, они попадают в один бакет, но для определения уникальности используется метод equals.
Если вставить два ключа с одинаковым хеш-кодом, но которые не равны по equals, то HashMap сохранит оба ключа как разные записи в одном бакете.
Пример:
Map<Key, String> map = new HashMap<>();
Key key1 = new Key(1); // hashCode = 42
Key key2 = new Key(2); // hashCode = 42, но !key1.equals(key2)
map.put(key1, "value1");
map.put(key2, "value2");
System.out.println(map.size()); // 2
Таким образом, одинаковый хеш-код не означает одинаковые ключи. HashMap сначала ищет бакет по хешу, а затем сравнивает ключи через equals. Если equals возвращает false, ключ считается новым и добавляется в коллекцию.