Sobes.tech
Junior — Middle

Ҳангоми илова кардани калиди нав-арзиши нав дар HashMap, чӣ рӯй медиҳад?

sobes.tech AI

Ҷавоб аз AI

Ҳашмапга янги калит-ҳадис пари қўшилганда, қуйидагилар бўлади:

  1. Калитнинг hashCode() усули ёрдамида хеш-код ҳисобланади.
  2. Хеш-код массив индексига айлантирилади (backend HashMap — bucketлар массиви) масалан, массив ўлчамининг қолоқ ёки бит маскаси орқали.
  3. Агар бу индекстаги bucketда элементлар бўлмаса, янги ёзув калит ва қиймат билан яратилади.
  4. Агар bucketда аллақачон элементлар бўлса (коллизия), занжир (бирлашган рўйхат ёки дарахт, агар кўп элементлар бўлса) орқали ўтилган ҳолда, ушбу калит аллақачон мавжуд ёки йўқлиги текширилади:
    • Агар калит топилса, қиймат янгиланади.
    • Агар калит топилмаса, янги ёзув занжирга қўшилади.
  5. Белгиланган юкланиш фоизи (load factor) етиб, массив кенгайтирилади ва элементлар қайта тақсимланади (rehash).

Масалан:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 5); // hash("apple") ҳисобланади, индекс белгиланади, ёзув қўшилади