logo

Работа на HashMap в Java


Какво е хеширане

Това е процес на преобразуване на обект в цяло число. Целочислената стойност помага при индексиране и по-бързо търсене.

Какво е HashMap

HashMap е част от рамката за събиране на Java. Той използва техника, наречена хеширане. Той реализира интерфейса на картата. Той съхранява данните в двойката ключ и стойност. HashMap съдържа масив от възли и възелът е представен като клас. Той използва масив и структура от данни LinkedList вътрешно за съхраняване на ключ и стойност. В HashMap има четири полета.

Работа на HashMap в Java

Преди да разберете вътрешната работа на HashMap, трябва да сте наясно с метода hashCode() и equals().

пружина и пружина mvc
    равно на():Той проверява равенството на два обекта. Той сравнява ключа, независимо дали са равни или не. Това е метод от класа Object. Може да се отмени. Ако замените метода equals(), тогава е задължително да замените метода hashCode().хеш код():Това е методът на обектния клас. Връща препратката към паметта на обекта в цяло число. Стойността, получена от метода, се използва като номер на кофа. Номерът на кофата е адресът на елемента в картата. Хеш кодът на нулев ключ е 0.кофи:Масивът на възела се нарича кофи. Всеки възел има структура от данни като LinkedList. Повече от един възел може да споделя една и съща кофа. Може да е различен по капацитет.
Работа на HashMap в Java

Вмъкване на двойка ключ, стойност в HashMap

Използваме метода put(), за да вмъкнем двойката ключ и стойност в HashMap. Размерът по подразбиране на HashMap е 16 (0 до 15).

Пример

В следващия пример искаме да вмъкнем три двойки (ключ, стойност) в HashMap.

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

Нека да видим при кой индекс двойката ключ, стойност ще бъде запазена в HashMap. Когато извикаме метода put(), той изчислява хеш кода на ключа „Аман“. Да предположим, че хеш кодът на „Aman“ е 2657860. За да съхраним ключа в паметта, трябва да изчислим индекса.

Изчисляване на индекс

Индексът минимизира размера на масива. Формулата за изчисляване на индекса е:

 Index = hashcode(Key) & (n-1) 

Където n е размерът на масива. Следователно стойността на индекса за „Аман“ е:

 Index = 2657860 & (16-1) = 4 

Стойността 4 е изчислената стойност на индекса, където ключът и стойността ще се съхраняват в HashMap.

java индекс на
Работа на HashMap в Java

Хеш сблъсък

Това е случаят, когато изчислената стойност на индекса е една и съща за два или повече ключа. Нека изчислим хеш кода за друг ключ „Sunny“. Да предположим, че хеш кодът за „Sunny“ е 63281940. За да съхраним ключа в паметта, трябва да изчислим индекса, като използваме формулата за индекс.

 Index=63281940 & (16-1) = 4 

Стойността 4 е изчислената стойност на индекса, където ключът ще се съхранява в HashMap. В този случай методът equals() проверява дали и двата ключа са равни или не. Ако ключовете са еднакви, заменете стойността с текущата стойност. В противен случай свържете този обект на възел към съществуващия обект на възел чрез LinkedList. Следователно и двата ключа ще бъдат съхранени под индекс 4.

Работа на HashMap в Java

По същия начин ще съхраним ключа „Ritesh“. Да предположим, че хеш кодът за ключа е 2349873. Стойността на индекса ще бъде 1. Следователно този ключ ще се съхранява при индекс 1.

Работа на HashMap в Java

метод get() в HashMap

методът get() се използва за получаване на стойността по нейния ключ. Няма да извлече стойността, ако не знаете ключа. Когато се извика метод get(K Key), той изчислява хеш кода на ключа.

Да предположим, че трябва да вземем ключа „Аман“. Следният метод ще бъде извикан.

обхождане на предварителна поръчка
 map.get(new Key('Aman')); 

Той генерира хеш кода като 2657860. Сега изчислете стойността на индекса на 2657860, като използвате формулата за индекс. Стойността на индекса ще бъде 4, както сме изчислили по-горе. методът get() търси стойността на индекса 4. Той сравнява първия елемент Key с дадения Key. Ако и двата ключа са равни, тогава той връща стойността else check за следващия елемент във възела, ако съществува. В нашия сценарий той се намира като първия елемент на възела и връща стойността 19.

Да донесем друг ключ „Слънчев“.

Хеш кодът на ключа „Sunny“ е 63281940. Изчислената стойност на индекса 63281940 е 4, както сме изчислили за метода put(). Отидете до индекс 4 на масива и сравнете ключа на първия елемент с дадения ключ. Той също така сравнява Keys. В нашия сценарий даденият ключ е вторият елемент, а следващият от възела е нула. Той сравнява втория елемент Key с указания Key и връща стойността 29. Връща null, ако следващият от възела е null.