Back to questions
Junior — Middle
77
Можете объяснить, как реализована работа метода put() в хеш-таблице, используя hashCode?
Answer from AI
sobes.tech AI
Метод put() в хеш-таблице использует хеш-функцию (обычно вызывается hashCode() у ключа), чтобы определить индекс в массиве, где будет храниться пара ключ-значение. Алгоритм примерно такой:
- Вызывается
hashCode()у ключа, чтобы получить целочисленное значение. - Это значение преобразуется в индекс массива, обычно через операцию взятия по модулю размера массива или с помощью битовых операций.
- Если в ячейке массива уже есть элементы (коллизия), происходит обход связанного списка или другой структуры (например, дерево), чтобы найти, есть ли уже такой ключ.
- Если ключ найден, значение обновляется; если нет — добавляется новая пара.
Пример упрощённого кода:
public V put(K key, V value) {
int hash = key.hashCode();
int index = hash % table.length;
// Проверяем, есть ли уже элемент с таким ключом
for (Entry<K, V> e = table[index]; e != null; e = e.next) {
if (e.key.equals(key)) {
V oldValue = e.value;
e.value = value;
return oldValue;
}
}
// Добавляем новый элемент в начало списка
Entry<K, V> newEntry = new Entry<>(key, value, table[index]);
table[index] = newEntry;
size++;
return null;
}
Таким образом, hashCode() помогает быстро найти позицию для хранения, а затем происходит проверка на коллизии и обновление или добавление значения.