TGViewer
Dolgo.polo Dev | Денис Долгополов Dolgo.polo Dev | Денис Долгополов @dolgo_polo_dev · 2.18K subscribers
Post #47 1.67K
​​Как по hashCode определяется позиция

Вероятно, все слышали, что есть структуры данных, в которых позиция, на которой будет храниться элемент, определяется его hashCode

Но hashCode — это Integer, значит, в таких структурах как HashMap, должен лежать массив длиной 2^32 ?

Нет, делается немного хитрее (на примере HashMap):

1. создается массив определенного размера например, arr.length = 16

2. когда наступает момент добавить новый элемент, вычисляется его хэш (хэш ключа). например, hashCode = 200

3. вычисляется позиция, на которую нужно положить элемент = hashCode % arr.length = 200 % 16 = 8

4. на позиции 8 создается массив. в него добавляется наш элемент

5. когда следующий элемент попадает на позицию 8, наш первый элемент сохраняет на него ссылку

да, мы получили массив связанных списков
да, нам теперь плевать на коллизии

дальше можно подумать, как эту систему балансировать, изменяя размер arr.length

....

есть ли другие подходы к сохранению данных, с вычислением позиции через hashCode элемента?
  • 👍 1
More from @dolgo_polo_dev
  1. Jun 22, 2026Медиалента — то, что пользователь реально ощущает физически: скроллы, зумы, тапы. Любые ми…
  2. Jun 20, 2026👮‍♀️ Как VPN видит трафик всех приложений? технически VPN на андроид — это сервис внутри…
  3. Jun 13, 2026Дуров опять не старается 🍌🍌🍌 Пару месяцев назад команду телеграма ругали за то, что они…
  4. May 24, 2026🧬Может ли VPN ускорить интернет? Интуиция подсказывает — точно нет Добавляется лишний сер…
  5. May 22, 2026кто же знал, что основным выгодополучателем max 📲 окажется habr.com любая статья набирает…
  6. May 6, 2026вы снова не туда воюете сначала все пушили Compose типо верстать в 2 раза быстрее, можно с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →