Sobes.tech
Junior — Middle

Կարող եք բացատրել HashMap-ի ներքին կառուցվածքը և աշխատանքը Java լեզվում?

sobes.tech AI

Պատասխան AI-ից

Java-յի HashMap-ը տվյալների կառուցվածք է, որը պահում է բանալու-արժեք զույգեր և ապահովում արագ մուտք դեպի արժեքը բանալիով:

Ներքին կառուցվածքը՝

  • HashMap-ը օգտագործում է բաքերի զանգված:
  • Բանալի համար հաշվարկվում է hashCode, որը հետո փոխարկվում է զանգվածի ինդեքսի:
  • Ամեն բաքում պահվում են նույն ինդեքսով տարրեր, սովորաբար կապակցված ցանկի կամ ծառի տեսքով (Java 8-ի հետ, եթե շատ բախումներ լինեն):

Աշխատանքային սկզբունքը՝

  • Օբյեկտի ավելացման ժամանակ, ինդեքսը հաշվարկվում է բանալի hash-ով:
  • Եթե բաքը դատարկ է, տարրն այնտեղ է տեղադրվում:
  • Եթե բաքը զբաղված է, ստուգվում է բանալիների հավասարությունը (equals), որպեսզի թարմացվի արժեքը կամ ավելացվի նոր տարր:
  • Բանալիով որոնման ժամանակ նույնպես հաշվարկվում է ինդեքսը, և տարրերը անցնում են բաքում՝ համապատասխանությունը գտնելու համար:

Օրինակ՝

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 5);
int value = map.get("apple"); // 5

Այսպիսով, HashMap-ը ապահովում է միջին հասանելիության ժամանակ O(1), բայց շատ բախումների դեպքում կարող է դեգրադացնել մինչև O(n):