logo

Рад ХасхМап-а у Јави


Шта је хеширање

То је процес претварања објекта у целобројну вредност. Целобројна вредност помаже у индексирању и бржим претрагама.

Шта је ХасхМап

ХасхМап је део Јава оквира за прикупљање. Користи технику која се зове хеширање. Он имплементира интерфејс мапе. Он чува податке у пару кључ и вредност. ХасхМап садржи низ чворова, а чвор је представљен као класа. Интерно користи низ и структуру података ЛинкедЛист за складиштење кључа и вредности. У ХасхМап-у постоје четири поља.

Рад ХасхМап-а у Јави

Пре него што разумете интерни рад ХасхМап-а, морате бити свесни метода хасхЦоде() и екуалс().

претварање објекта у стринг
    једнако():Проверава једнакост два објекта. Упоређује Кључ, без обзира да ли су једнаки или не. То је метод класе Објецт. Може се надјачати. Ако заобиђете метод екуалс(), онда је обавезно заменити метод хасхЦоде().хасхЦоде():Ово је метод класе објеката. Враћа меморијску референцу објекта у целобројном облику. Вредност добијена методом се користи као број сегмента. Број корпе је адреса елемента унутар мапе. Хеш код нултог кључа је 0.корпе:Низ чвора се назива буцкетс. Сваки чвор има структуру података као што је ЛинкедЛист. Више од једног чвора може да дели исту канту. Може се разликовати по капацитету.
Рад ХасхМап-а у Јави

Убаци кључ, вредност пара у ХасхМап

Користимо метод пут() да убацимо пар кључа и вредности у ХасхМап. Подразумевана величина ХасхМап-а је 16 (0 до 15).

Пример

У следећем примеру желимо да убацимо три пара (Кључ, Вредност) у ХасхМап.

 HashMap map = new HashMap(); map.put('Aman', 19); map.put('Sunny', 29); map.put('Ritesh', 39); 

Хајде да видимо на ком индексу ће пар кључ, вредност бити сачуван у ХасхМап. Када позовемо метод пут(), онда он израчунава хеш код кључа 'Аман'. Претпоставимо да је хеш код 'Аман' 2657860. Да бисмо сместили кључ у меморију, морамо да израчунамо индекс.

Израчунавање индекса

Индекс минимизира величину низа. Формула за израчунавање индекса је:

мискл упдате придружите се
 Index = hashcode(Key) & (n-1) 

Где је н величина низа. Дакле, вредност индекса за 'Аман' је:

 Index = 2657860 & (16-1) = 4 

Вредност 4 је израчуната вредност индекса где ће се кључ и вредност чувати у ХасхМап-у.

Рад ХасхМап-а у Јави

Хасх Цоллисион

Ово је случај када је израчуната вредност индекса иста за два или више кључева. Хајде да израчунамо хеш код за други кључ „Сунни“. Претпоставимо да је хеш код за 'Сунни' 63281940. Да бисмо сместили кључ у меморију, морамо да израчунамо индекс коришћењем формуле индекса.

 Index=63281940 & (16-1) = 4 

Вредност 4 је израчуната вредност индекса где ће кључ бити ускладиштен у ХасхМап-у. У овом случају, екуалс() метода проверава да ли су оба кључа једнака или не. Ако су кључеви исти, замените вредност тренутном вредношћу. У супротном, повежите овај објекат чвора са постојећим објектом чвора преко ЛинкедЛист-а. Стога ће оба кључа бити ускладиштена на индексу 4.

Рад ХасхМап-а у Јави

Слично томе, чуваћемо кључ 'Ритесх'. Претпоставимо да је хеш код за кључ 2349873. Вредност индекса ће бити 1. Стога ће овај кључ бити ускладиштен на индексу 1.

лисица против вука
Рад ХасхМап-а у Јави

гет() метода у ХасхМап-у

гет() метода се користи за добијање вредности по кључу. Неће донети вредност ако не знате кључ. Када се позове метода гет(К Кеи), она израчунава хеш код кључа.

Претпоставимо да морамо да узмемо кључ 'Аман'. Следећи метод ће бити позван.

 map.get(new Key('Aman')); 

Он генерише хеш код као 2657860. Сада израчунајте вредност индекса од 2657860 користећи индексну формулу. Вредност индекса ће бити 4, као што смо израчунали изнад. гет() метода тражи вредност индекса 4. Она упоређује први елемент Кеи са датим кључем. Ако су оба кључа једнака, онда враћа проверу вредности елсе за следећи елемент у чвору ако постоји. У нашем сценарију, налази се као први елемент чвора и враћа вредност 19.

Хајде да донесемо још један кључ 'Сунни'.

Хеш код кључа 'Сунни' је 63281940. Израчуната вредност индекса 63281940 је 4, као што смо израчунали за методу пут(). Идите на индекс 4 низа и упоредите кључ првог елемента са датим кључем. Такође упоређује кључеве. У нашем сценарију, дати кључ је други елемент, а следећи чвор је нула. Он упоређује други елемент Кеи са наведеним кључем и враћа вредност 29. Враћа нулл ако је следећи чвор нулл.