Junior — Middle
Оё метавонед шарҳ диҳед, ки чӣ гуна ба унсури дар дохили сохтори HashMap дастрасӣ пайдо кардан мумкин аст?
sobes.tech AI
Ҷавоб аз AI
Дар Java, HashMap ба асоси массиви бакетҳо амалӣ карда мешавад, ки ҳар яке аз онҳо рӯйхати пайваст ё дарахт (аз Java 8) аз элементҳо бо ҳамон код хешро дар бар мегирад.
Дастрасӣ ба элемент чунин аст:
- Код хеши калид бо истифода аз
hashCode()ҳисоб карда мешавад. - Код хеш ба индекс массива бакетҳо (одатан тавассути амалиёт
hash & (capacity - 1)) табдил дода мешавад. - Дар бакети интихобшуда, элемент бо калиди баробар ба калиди ҷустуҷӯӣ (аз тариқи
equals()) ҷустуҷӯ мешавад. - Агар элемент ёбад, арзиши пайвасташударо бармегардонад.
Масалан:
HashMap<String, Integer> map = new HashMap<>();
map.put("key", 42);
Integer value = map.get("key"); // ҳисоб кардани hash, интихоби бакет, ҷустуҷӯи элемент
Бинобар ин, дастрасӣ ба элемент аз ҳисоб кардани хеш, интихоби бакет ва ҷустуҷӯи калид дар дохили бакет иборат аст.