Vad är Hashing
Det är processen att omvandla ett objekt till ett heltalsvärde. Heltalsvärdet hjälper till med indexering och snabbare sökningar.
Vad är HashMap
HashMap är en del av Java-samlingsramverket. Den använder en teknik som kallas Hashing. Den implementerar kartgränssnittet. Den lagrar data i paret nyckel och värde. HashMap innehåller en array av noderna, och noden representeras som en klass. Den använder en array och LinkedList-datastruktur internt för att lagra nyckel och värde. Det finns fyra fält i HashMap.
Innan du förstår HashMaps interna funktion måste du vara medveten om metoderna hashCode() och equals().
fjädermoduler
Infoga nyckel, värdepar i HashMap
Vi använder put()-metoden för att infoga nyckel- och värdeparet i HashMap. Standardstorleken för HashMap är 16 (0 till 15).
Exempel
I följande exempel vill vi infoga tre (Key, Value) par i HashMap.
HashMap map = new HashMap(); map.put('Aman', 19); map.put('Sunny', 29); map.put('Ritesh', 39);
Låt oss se vid vilket index nyckel, värdeparet kommer att sparas i HashMap. När vi anropar put()-metoden, beräknar den hashkoden för nyckeln 'Aman'. Antag att hashkoden för 'Aman' är 2657860. För att lagra nyckeln i minnet måste vi beräkna indexet.
Skådespelaren Rekha
Beräknar index
Index minimerar storleken på arrayen. Formeln för att beräkna indexet är:
Index = hashcode(Key) & (n-1)
Där n är storleken på matrisen. Därför är indexvärdet för 'Aman':
Index = 2657860 & (16-1) = 4
Värdet 4 är det beräknade indexvärdet där nyckeln och värdet lagras i HashMap.
Hashkollision
Detta är fallet när det beräknade indexvärdet är detsamma för två eller flera nycklar. Låt oss beräkna hashkoden för en annan Key 'Sunny'. Anta att hashkoden för 'Sunny' är 63281940. För att lagra nyckeln i minnet måste vi beräkna index med hjälp av indexformeln.
Index=63281940 & (16-1) = 4
Värdet 4 är det beräknade indexvärdet där nyckeln kommer att lagras i HashMap. I det här fallet kontrollerar metoden equals() att båda nycklarna är lika eller inte. Om nycklarna är samma, ersätt värdet med det aktuella värdet. Annars ansluter du detta nodobjekt till det befintliga nodobjektet via LinkedList. Därför kommer båda nycklarna att lagras i index 4.
java försök fånga
På samma sätt kommer vi att lagra nyckeln 'Ritesh'. Anta att hashkoden för nyckeln är 2349873. Indexvärdet kommer att vara 1. Därför kommer denna nyckel att lagras i index 1.
get()-metoden i HashMap
get()-metoden används för att få värdet genom dess nyckel. Det kommer inte att hämta värdet om du inte känner till nyckeln. När get(K Key)-metoden anropas, beräknar den nyckelns hash-kod.
Anta att vi måste hämta nyckeln 'Aman'. Följande metod kommer att kallas.
map.get(new Key('Aman'));
Den genererar hashkoden som 2657860. Beräkna nu indexvärdet på 2657860 med hjälp av indexformeln. Indexvärdet blir 4, som vi har räknat ut ovan. get() metodsökning efter indexvärdet 4. Den jämför det första elementet Key med den givna nyckeln. Om båda nycklarna är lika, returnerar den värdet annars check för nästa element i noden om det finns. I vårt scenario hittas det som det första elementet i noden och returnerar värdet 19.
Låt oss hämta en annan nyckel 'Sunny.'
Hashkoden för nyckeln 'Sunny' är 63281940. Det beräknade indexvärdet på 63281940 är 4, som vi har beräknat för put()-metoden. Gå till index 4 i arrayen och jämför det första elementets nyckel med den givna nyckeln. Den jämför också Keys. I vårt scenario är den givna nyckeln det andra elementet, och nästa i noden är null. Den jämför det andra elementet Key med den specificerade nyckeln och returnerar värdet 29. Den returnerar null om nästa i noden är null.