Sobes.tech
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) паст шавад.