Back to questions
Middle
130
Когда происходит коллизия hashCode в HashMap?
Answer from AI
sobes.tech AI
Коллизия hashCode в HashMap происходит, когда два разных ключа возвращают одинаковое значение hashCode. В этом случае оба ключа попадают в одну и ту же корзину (бакет) внутренней структуры HashMap.
HashMap использует hashCode для определения индекса бакета, где хранится пара ключ-значение. Если hashCode совпадает, то ключи хранятся в одной цепочке (или дереве, если элементов много) внутри этого бакета.
Коллизии неизбежны из-за ограниченного диапазона int (32-бит) для hashCode и потенциально большого количества уникальных ключей. Хорошая реализация hashCode минимизирует коллизии, но полностью избежать их невозможно.
Пример:
String a = "FB"; // hashCode = 2236
String b = "Ea"; // hashCode = 2236
System.out.println(a.hashCode()); // 2236
System.out.println(b.hashCode()); // 2236
HashMap<String, Integer> map = new HashMap<>();
map.put(a, 1);
map.put(b, 2); // оба ключа попадут в один бакет из-за одинакового hashCode