Junior
Ինչպե՞ս է իրականացվում օբյեկտների պահպանումը HashMap-ում։
sobes.tech AI
Պատասխան AI-ից
Նշանները պահվում են որպես " բանալի-արժեք" զույգեր։ HashMap-ը օգտագործում է "խցիկների" (buckets) զանգված։ Երբ ավելացվում է զույգը՝
- Կանալի
hashCode()մեթոդով հաշվարկվում է հեշ-կոդը։ - Հաշվարկված հեշ-կոդից օգտվելով՝ որոշվում է զանգվածի մեջ խցիկի ինդեքսը։
- Այդ խցիկում տեղադրվում է
Entryզույգ (կամ համապատասխան նոր Java տարբերակներում), որը պարունակում է բանալին, արժեքը և հեշ-կոդը։ - Եթե այդ խցիկում արդեն առկա են օբյեկտներ, նրանք ձևավորում են կապված ցանկ կամ ծառ (բազմաթիվ բախումների դեպքում)։
Երբ ստացվում է օբյեկտը բանալիով՝
- Կանալի
hashCode()հաշվարկվում է։ - Որոշվում է խցիկի ինդեքսը։
- Խցիկի ներսում որոնվում է օբյեկտ, որի բանալին
equals()մեթոդով վերադարձնում էtrue, և հեշ-կոդները համընկնում են։
Բանալիները պետք է լինեն փոփոխական չլինող և ճիշտ իրականացնեն hashCode() և equals() մեթոդները։