Junior — Middle
118
Πώς γίνεται η δημιουργία και η χρήση του hash-code μέσα στο HashMap για τον καθορισμό της θέσης των στοιχείων;
Εταιρείες όπου ρωτήθηκαν
Απάντηση από AI
sobes.tech AI
В Java HashMap для определения позиции элемента используется хеш-код ключа. Процесс следующий:
- Вызывается метод
hashCode()у ключа, который возвращает целочисленное значение. - Для уменьшения коллизий и более равномерного распределения, этот хеш-код дополнительно обрабатывается (например, применяется побитовый сдвиг и XOR).
- Полученный хеш используется для вычисления индекса в массиве бакетов (обычно через операцию
hash & (capacity - 1), где capacity — размер массива).
Таким образом, хеш-код определяет, в какой бакет попадёт элемент. При коллизиях элементы хранятся в связном списке или дереве внутри бакета.
Пример упрощённого вычисления индекса:
int hash = key.hashCode();
int index = (hash ^ (hash >>> 16)) & (table.length - 1);
Это позволяет быстро находить и вставлять элементы по ключу.