Sobes.tech
Junior

Ինչպե՞ս է իրականացվում օբյեկտների պահպանումը HashMap-ում։

sobes.tech AI

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

Նշանները պահվում են որպես " բանալի-արժեք" զույգեր։ HashMap-ը օգտագործում է "խցիկների" (buckets) զանգված։ Երբ ավելացվում է զույգը՝

  1. Կանալի hashCode() մեթոդով հաշվարկվում է հեշ-կոդը։
  2. Հաշվարկված հեշ-կոդից օգտվելով՝ որոշվում է զանգվածի մեջ խցիկի ինդեքսը։
  3. Այդ խցիկում տեղադրվում է Entry զույգ (կամ համապատասխան նոր Java տարբերակներում), որը պարունակում է բանալին, արժեքը և հեշ-կոդը։
  4. Եթե այդ խցիկում արդեն առկա են օբյեկտներ, նրանք ձևավորում են կապված ցանկ կամ ծառ (բազմաթիվ բախումների դեպքում)։

Երբ ստացվում է օբյեկտը բանալիով՝

  1. Կանալի hashCode() հաշվարկվում է։
  2. Որոշվում է խցիկի ինդեքսը։
  3. Խցիկի ներսում որոնվում է օբյեկտ, որի բանալին equals() մեթոդով վերադարձնում է true, և հեշ-կոդները համընկնում են։

Բանալիները պետք է լինեն փոփոխական չլինող և ճիշտ իրականացնեն hashCode() և equals() մեթոդները։