Junior
Чӣ гуна нигоҳдории объектҳо дар HashMap амалӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Объектҳо ҳамчун ҷуфтҳои "калид-арзиш" нигоҳ дошта мешаванд. HashMap аз массиви "бӯтаҳо" (buckets) истифода мекунад. Вақте ки як ҷуфт илова мешавад:
- Кодекоди хеши калид бо истифода аз
hashCode()ҳисоб карда мешавад. - Бо истифода аз кодекоди хеш, индекс ёбиши бӯта дар массив муайян карда мешавад.
- Ба ин бӯта ҷуфти
Entry(ё баробар дар версияҳои навтарини Java) гузошта мешавад, ки калид, арзиш ва кодекоди хешро дар бар мегирад. - Агар дар бӯта аллакай объектҳо бошанд, онҳо рӯйхати пайвастшуда ё дарахтро ташкил медиҳанд (дар ҳолати зиёди коллизияҳо).
Вақте ки объектро бо калид мегиред:
- Кодекоди хеши калид ҳисоб карда мешавад.
- Индекси бӯта муайян карда мешавад.
- Дар дохили бӯта, объект бо калид ҷустуҷӯ мешавад, ки барои он
equals()trueбармегардонад ва кодекоди хеш мувофиқанд.
Калидҳо бояд тағирнопазир бошанд ва методҳои hashCode() ва equals()-ро дуруст иҷро кунанд.