При вызове метода put(key, value):
- Вычисляется хэш ключа (
key.hashCode()).
- Этот хэш используется для определения индекса корзины (bucket) в массиве.
- Если в корзине пусто, создается новая запись (
Node) с ключом, значением, хэшем и ссылкой на следующее значение (которая равна null), и помещается в корзину.
- Если в корзине уже есть записи:
- Если существует запись с таким же ключом (
key.equals(existingKey)), значение в этой записи обновляется.
- Если ключи отличаются, новая запись связывается с существующими записями в виде связанного списка или дерева (если количество записей в корзине превышает пороговое значение, происходит преобразование в дерево для улучшения производительности).
- Проверяется, не превышен ли порог загрузки (load factor * capacity). Если превышен, происходит изменение размера массива (resizing) вдвое. При этом все существующие записи перераспределяются по новым корзинам.
java