Hashtable

Een hashtable word vaak in de verwaring gemaakt met een hashmap, iets wat snel gebeurt is omdat in de programeer omgeving er eigenlijk alleen met een hashmap word gewerkt. Al is hiervoor wel een hashtable nodig. Vaak zit dit in de achtergrond weg gestopt en zie je het dus niet.

De werking in theorie

Een hashtable is een tabel waarin er getallen er als eerste instantie er uit zien als indexes maar eigenlijk beter gezien kunnen worden als handels, dit omdat er tussendoor getallen kunnen ontbreken, iets wat bij een array niet kan. wat de hashtable doet is het omzetten van de handles naar een indexes, irrelevant wat de index waarde is.

De werking in de praktijk

In de praktijk word een hashtable gebruikt in combinatie met een array, om zo een hashmap te maken. Iets wat je kunt gebruiken.......[hier ontbreekt iets]......de groote van de array is uiteraard dat alle waarde er in passen, maar als eis is dat dit aantal altijd een priem getal is. wanneer dit niet een priem getal is kan algorithme in een lus raken :S.

Now om een waarde te kunnen opslaan in de array is er een index nodig, die je niet weet, hier komt het deel van de hashtable in zijn werking. de hashtable heeft 2 functies, zoek lege plek voor een gegeven handle, en zoek een index met een gegeven handle.

Hiervoor moeten ze dezelfde methode gebruiken. één methode is neem de module waarde van handle als index, en controleer of deze index leeg is, zoja dan kan er hier de nieuwe pair(handle, value) worden toegevoegt. is deze niet leeg neem dan de deel waarde als stap groote om door de array te zoeken naar een leeg plek. voor het vinden geld het zelfde op het feit na dat de index dan niet leeg moet zijn en de handle waarde gelijk moet zijn aan de handle waarde waarmee je zoekt.

index = handle%array.length
stapsize = handle/array.length