Коллизия хэш-кодов в HashMap возникает, когда два неравных объекта имеют одинаковый хэш-код (hashCode()).
Если при добавлении объекта в HashMap его хэш-код совпадает с хэш-кодом уже присутствующего в той же корзине объекта, HashMap для разрешения коллизии вызывает метод equals() для сравнения ключей.
equals() возвращает true, новый объект заменяет старый (если ключи равны).equals() возвращает false, оба объекта (с разными ключами, но одинаковым хэш-кодом) хранятся в одной корзине, образуя либо связный список, либо дерево (начиная с Java 8 при достаточном количестве элементов в корзине) в зависимости от количества элементов в корзине.Частые коллизии ухудшают производительность HashMap, снижая сложность операций get() и put() от O(1) в идеальном случае до O(n) в наихудшем (для списка) или O(log n) (для дерева). Эффективное распределение хэш-кодов является ключевым для производительности HashMap.