Junior — Middle
Оё метавонед сохтори дохилии ва фаъолияти HashMap дар забони Java-ро шарҳ диҳед?
sobes.tech AI
Ҷавоб аз AI
HashMap дар Java — структураи маълумот барои нигоҳдории ҷуфтҳои калид-арзиш бо дастрасии зуд тавассути калид.
Сохтори дохилӣ:
- HashMap истифода мебарад массиви куттиҳо (bucket array).
- Барои калид, кодекси хеш (hashCode) ҳисоб карда мешавад, ки баъд ба индекси массив табдил меёбад.
- Дар ҳар куттӣ, элементҳо бо ҳамин индекс нигоҳ дошта мешаванд, одатан дар шакли рӯйхати пайвастшуда ё дарахт (бо Java 8, агар бисёр коллизияҳо бошанд).
Функсионал:
- Вақте ки объект илова мешавад, индекс бо асоси хеши калид ҳисоб карда мешавад.
- Агар куттӣ холӣ бошад, элемент дар он ҷой мегузарад.
- Агар куттӣ ишғол шуда бошад, баробарии калидҳо (equals) санҷида мешавад, то арзишро навсозӣ ё элемент нав илова карда шавад.
- Дар ҷустуҷӯ бо калид, ҳамчунин индекс ҳисоб карда мешавад ва элементҳо дар куттӣ барои ёфтани мувофиқат гузаронида мешаванд.
Масалан:
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 5);
int value = map.get("apple"); // 5
Тавре ки ин, HashMap вақти дастрасии амортизатсионӣ O(1) таъмин мекунад, аммо бо бисёр коллизияҳо метавонад то O(n) паст шавад.