Wat is een hash-kaart in de programmering en waar kan het worden gebruikt

Ik heb vaak mensen gehoord over hashing en hash-kaarten en hash-tabellen. Ik wilde weten wat ze zijn en waar je ze het beste kunt gebruiken.


Antwoord 1, Autoriteit 100%

Eerste die u wilt, lees dan misschien deze artikel .

Wanneer u lijsten gebruikt en u op zoek bent naar een speciaal item dat u normaal gesproken over de volledige lijst moet herhalen. Dit is erg duur als je grote lijsten hebt.
Een hashtable kan een stuk sneller zijn, onder de beste omstandigheden krijg je het item dat je zoekt met slechts één toegang.
Hoe werkt het? Als een woordenboek … wanneer u op zoek bent naar het woord “hashtable” in een woordenboek, begin u niet met het eerste woord onder ‘A’. Maar eerder ga je rechtdoor naar de letter ‘H’. Toen ‘ha’, ‘heeft’ enzovoort, tot je je woord hebt gevonden. U gebruikt een index binnen uw woordenboek om uw zoekopdracht te versnellen.
Een hashtable doet in principe hetzelfde. Elk item krijgt een unieke index (de zogenaamde hash). Je gebruikt deze hash voor lookups. De HASH kan een index zijn in een normale gelinkte lijst. Uw hasj kan bijvoorbeeld een aantal zijn zoals 2130, wat betekent dat u naar positie 2130 in uw lijst moet kijken. Een opzoeking bij een bekende index binnen een normale lijst is zeer eenvoudig en snel.
Het probleem van de hele aanpak is de zogenaamde hash functiondie deze index aan elk item wijst. Wanneer u op zoek bent naar een artikel, moet u de index van tevoren kunnen berekenen. Net als in een echt woordenboek, waar je ziet dat het woord ‘hashtable’ begint met de letter ‘H’ en daarom ken je de geschatte positie.
Een goede hash-functie biedt hashcodes die gelijkmatig zijn gedistueerd over de ruimte van alle mogelijke hashcodes. En natuurlijk probeert het collisionste vermijden. Een botsing gebeurt wanneer twee verschillende items dezelfde hashcode krijgen.
In C # heeft bijvoorbeeld elk object een GetHashcode()Method die een hash ervoor biedt (niet noodzakelijk uniek). Dit kan worden gebruikt voor lookups en sorteren met in uw woordenboek.

Wanneer u Hashtables gaat gebruiken, moet u altijd in gedachten houden, dat u de botsingen correct aanhoudt. Het kan vrij gemakkelijk in grote hashtables gebeuren dat twee objecten dezelfde hash hebben (misschien is je overbelasting van gethashcode () defect, misschien gebeurde er iets anders).


Antwoord 2, Autoriteit 17%

In principe kunt u een HASHMAP in staat om items met ID’s op te slaan. Ze worden opgeslagen in een tabelformaat met de identifier die hashed wordt met behulp van een hash-algoritme.

Meestal zijn ze efficiënter om items op te halen dan bij bomen enz.

U kunt dit nuttig vinden: http://www.relisoft.com/ Boek / LANG / POSER / 8HASH.HTML

Ik hoop dat het helpt,

Chris


Antwoord 3, Autoriteit 12%

Hashing (in de nietcryptografische zin) is een dekentermijn voor het nemen van een invoer en het produceren van een uitvoer om het te identificeren. Een triviaal voorbeeld van een hash is het toevoegen van de som van de letters van een string, d.w.z.e:

f(abc) = 6

Merk op dat dit triviale hash-schema een botsing zou creëren tussen de strings ABC, BCA, AE , enz. Een effectief hash-schema zou op natuurlijke wijze verschillende waarden voor elke reeks produceren.

Hashmaps en hashtables zijn datastructuren (zoals arrays en lijsten), die hashing gebruiken om gegevens op te slaan. In een hashtable wordt een hash geproduceerd (vanuit een geleverde sleutel of van het object zelf) dat bepaalt waar in de tabel het object wordt opgeslagen. Dit betekent dat zolang de gebruiker van de hashtable op de hoogte is van de sleutel, het ophalen van het object is extreem snel.

In een lijst, in vergelijking, moet u op de een of andere manier door de lijst zoeken om uw gezochte object te vinden. Dit vertegenwoordigt ook de achterkant van hashtables, die is dat het zeer gecompliceerd is om een ​​object in te vinden zonder de sleutel te kennen, omdat waar het object in de tabel is opgeslagen, niet relevant is voor de waarde ervan, noch wanneer het werd ingevoerd.

Hashmaps is vergelijkbaar met hashtables, maar slechts één voorbeeld van elk object wordt erin opgeslagen (daarom moet er geen toets worden verstrekt, het object zelf is de sleutel).

Dit is natuurlijk een zeer eenvoudige uitleg, dus ik stel voor dat je vanaf dit punt diepgaand hebt gelezen. Ik hoop dat ik geen domme fouten heb gemaakt. =)


Antwoord 4

HASHMAP wordt gebruikt voor het opslaan van gegevens in sleutelwaardeparen. We kunnen een HASHMAP gebruiken voor het opslaan van objecten in een toepassing en het verder gebruiken in dezelfde toepassing voor het opslaan, bijwerken, verwijderen van waarden. HASHMAP-sleutel en waarden worden opgeslagen in een bucket naar een specifieke invoer, deze invoerlocatie wordt bepaald met behulp van Hashcode-functie. Deze HASHCODE-functie bepaalt de hash waar de waarde wordt opgeslagen. De gedetailleerde explanantion van hoe Hashmap Works wordt beschreven in deze video: https://youtu.be/iqyc1odzsno

Other episodes