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):